如何确定Haskell中常量表达式的类型?

0 haskell types functional-programming

我正在尝试修改我的函数式编程考试,并且对过去论文的第一个问题感到困惑,是的,我们不允许使用解决方案表,这里是过去论文中第一个问题的示例.

对于以下每个表达式,在Haskell中给出其类型(对于具有多种类型的表达式,只需给出一种类型).

(True, "hello", 42)
[42, 4, 2]
length [True]
filter even
Run Code Online (Sandbox Code Playgroud)

我个人认为,对于一个和两个的答案将是bool,String和int的元组以及一个int的列表,这是正确的假设吗?第二,你如何回答3和4,我确定长度为True只输出一个具有该长度的所有元素的列表,并且该过滤器甚至只是将一个int列表更改为所有偶数的列表,尽管如何我可以将此作为答案吗?

Rao*_*ter 6

如果要使用ghci使变量类型脱机,则必须键入
:t 表达式

如果你想在ghci中创建变量,你必须使用let而不使用'in'(如monad的表示法,我不知道你是否已经看过它们):
let var = expr

如果你自己检查一下,你应该能够更容易地为你的考试记住它.(祝你好运;))