在下面的代码:是否在Haskell中定义了部分函数或curried函数?
ismaxl :: (Ord a) => [a] -> a -> Bool
ismaxl l x = x == maxel
where maxel = maximum l
main = do
let mylist = [1, 2, 3, 5]
let ismax = ismaxl mylist
--Is each call O(1)? Does each call remember maxel?
let c1 = ismax 1
let c2 = ismax 2
let c3 = ismax 3
let c5 = ismax 5
putStrLn (show [c1, c2, c3, c5])
是否部分功能ismax,计算MAXEL?从某种意义上说,有人可以指出关于Haskell中部分函数复杂性的规则吗?在上面的例子中,编译器只能调用一次最大值?换句话说,部分函数是否保留之前调用内部where子句的引用?
我有一些CPU的绑定代码不能令人满意地执行,我在寻找可能的错误在我的推理复杂性。
个人资料。档案资料档案。 – delnan 2010-11-12 16:47:26
让我补充@delnan所说的[建议您分析代码](http://book.realworldhaskell.org/read/profiling-and-optimization.html)。 – 2010-11-12 16:50:04
从何时在Haskell中定义性能?也许你的意思是Haskell的一些实现。 – ephemient 2010-11-13 08:02:23