从GHCI 版本 8.0.1 开始,let
不再需要在 REPL 上定义函数。
所以这对你来说应该很好:
λ: addTwo x y = x + y
λ: addTwo 1 2
3
λ: :t addTwo
addTwo :: Num a => a -> a -> a
Haskell 的类型推断提供了适用于浮点数的通用类型:
λ: addTwo 2.0 1.0
3.0
如果您必须提供自己的输入,您似乎需要let
与多行输入结合使用(用于:set +m
在 GHCI 中启用多行输入):
λ: let addTwo :: Int -> Int -> Int
| addTwo x y = x + y
|
λ: addTwo 1 2
3
但是,如果您尝试传递除 an 以外的任何内容,您将得到错误,Int
因为您的非多态类型:
λ: addTwo 2.0 1.0
<interactive>:34:8: error:
• No instance for (Fractional Int) arising from the literal ‘2.0’
• In the first argument of ‘addTwo’, namely ‘2.0’
In the expression: addTwo 2.0 1.0
In an equation for ‘it’: it = addTwo 2.0 1.0