我正在读modify ce i c = ce{classes=\j→if I==j then Just c else classes ce j}
J是从哪里来的?在第13页上有一个关于modify的简短介绍,但根本没有提到j。在p14上,有一个对addClass下的return (modify ce i ( is,[]))的调用。这就是我不明白的地方。谢谢你的帮助。
目前,我正尝试用“学习Haskell”一书来学习Haskell,并试图了解flip函数在中的实现。问题是,作者指出,如果g x y = f y x是有效的,那么f y x = g x y也必须是真。但是,这种逆转是如何和为什么影响这两个函数定义的呢?
我知道currying是如何工作的,我也知道->操作符在默认情况下是正确关联的,所以类型声明实际上是相同的。我也了解<
我一直在审阅Haskell分层库中的代码片段。我可以理解下面的大部分代码片段,除了“。(函数组合)这种情况下的行为让我大吃一惊,因为我希望foldr的参数是: foldr f z list。所以我想我的困惑是关于函数组合和where子句的行为。在我尝试理解Haskell的意义时,任何帮助理解这个函数的人都会非常感激。
请原谅我头脑简单,但我很难理解Haskell,尤其是列表。我试着写一个函数来返回一个字符串(不导入模块)的所有指定长度n的子串(每次从原始字符串的长度-1开始调用函数时,这个长度都会减1)。String -> [String] |n > x = (take n (drop x (tail s))) : allSubs (x+1) n s
我不期望在我的代码的逻辑或健壮性方面得到帮助,无论它有多大