我是Haskell语言的新手,我对read函数有一些问题.确切地说,我理解:
read "8.2" + 3.8
Run Code Online (Sandbox Code Playgroud)
应该返回12.0,因为我们想要返回与第二个成员相同的类型.我没有真正得到的是为什么:
read "True" || False
Run Code Online (Sandbox Code Playgroud)
回归真的吗?好吧,它返回与False相同的类型,这是布尔值,但我不明白为什么是第一个成员.我想我有一个模糊的想法,比如,在这种情况下返回函数将返回第一个成员,因为条件是|| ?请帮帮我.另外,我很抱歉,如果这对你们大多数人来说都是基本的,但我真的想要了解它.
我是函数式编程的新手,我想要了解懒惰的评估是如何工作的.我有以下功能:
nats = 0:(map (+1) nats)
test = foldr (\x y-> if x > 2 then 0 else x+y) 10 nats
Run Code Online (Sandbox Code Playgroud)
而据我所知,第一个得到所有自然数的列表,直到它耗尽内存(但从来没有真正发生过,我理解),第二个应该做的正是什么?测试有一个lambda演算函数,它得到一个x和y,如果x> 2和x + y,则返回2,但这是否意味着它将返回0,因为x = 10?我有点困惑.在那种情况下,nat真的需要吗?
编辑:测试返回3,但现在我真的很困惑,因为我不明白如何.
如果我犯了一些菜鸟错误,谢谢,抱歉,但我不明白这是怎么回事.