在箭头符号中,您可以使用rec关键字来编写递归定义.例如:
rec
name <- function -< input
input <- otherFunction -< name
Run Code Online (Sandbox Code Playgroud)
这怎么能评估?它似乎只会进入一个无限循环或其他东西.我知道它评估循环箭头组合器,但我不明白它是如何工作的.
编辑:权力示例非常有用.但是你怎么用写符号来写呢?我假设你需要使用rec.
我在尝试理解Haskell如何确定函数类型时感到有些困惑.这是一个例子:
boolFcn x y = x/=3 && y/=4
Run Code Online (Sandbox Code Playgroud)
当我检查上述函数的类型时,它给出了我的结果:
(Num a1, Num a, Eq a1, Eq a) => a -> a1 -> Bool
Run Code Online (Sandbox Code Playgroud)
这是另一个例子:
triangles = [ (a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10] ]
Run Code Online (Sandbox Code Playgroud)
而apllying :t上triangles与结果:
(Num t2, Num t1, Num t, Enum t2, Enum t1, Enum t) => [(t, t1, t2)]
Run Code Online (Sandbox Code Playgroud)
我头脑中出现了一些问题,我自己解决这些问题非常困难:
a, a1文字组成,而三角形的类型由t,t1文字组成?有什么区别a和t?为什么boolFcn的类型不能简化为:
(Num a, Eq a) => a -> a …
如果我有一个Data.Text我想要排序的值,我应该将它解压缩到一个String并使用sort或其他功能吗?当cons和append都是O(n)时,似乎很难为Text值编写快速排序函数.