为什么这样做..。
Just.(+3) $ 6.7
Just $ truncate 8.9
...but不是这个吗?
Just.truncate $ 8.9
我尝试将截断解析为一个简单的双-> Int:
let f :: Double -> Int; f = (\ x -> truncate x);
...but,这似乎不是问题所在.
Just.f $ 5.6
<interactive>:41:1:
Failed to load interface for `Just'
Use -v to see a list of the files searched for.
非常感谢!
发布于 2014-02-15 20:07:19
当您打算编写函数时,编写f . g
要比编写f.g
好。它有一点可读性,你可以避免像这样的一系列问题。
当您在Haskell中有一些表单Foo.bar
或Foo.Bar
时,它被解析为限定名。这就是为什么Just.f
不能工作的原因:Just
不是一个模块,所以不能加载Just
的“接口”。
为什么Just.(+3)
按预期工作:(+3)
是一个正确的部分,而不是标识符,所以这个点不能是限定名的一部分。解释它的唯一方法是假设.
是运算符(.)
的infix应用程序,所以它必须是Just . (+3)
。
发布于 2014-02-15 20:04:26
大写标识符和另一个标识符之间的点被解析为限定名(例如。Data.Map.insert
),因此错误告诉您它找不到一个名为Just
的模块。您可以简单地在圆点周围添加空格来修复这个问题。
https://stackoverflow.com/questions/21802875
复制相似问题