Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中的长度vs头部vs最后一个_Haskell_Functional Programming_Declarative - Fatal编程技术网

Haskell中的长度vs头部vs最后一个

Haskell中的长度vs头部vs最后一个,haskell,functional-programming,declarative,Haskell,Functional Programming,Declarative,我知道其中有两种说法是正确的,但我不知道哪一种是正确的 设e为[Int] 存在e这样的情况:头e的评估不会完成,但最后一个e会 存在e这样的情况:对最后一个e的评估不会完成,但头e将完成 存在e这样的情况:长度e的评估不会完成,但最后一个e将完成 我似乎很清楚2是真的,但我看不出1或3怎么可能是真的 我的想法是,为了计算一个列表的长度,你需要得到最后一个列表,使1和3不可能因为这是一个测试问题,我不会直接回答它,但这里有一些提示;如果你自己解决这个问题会更好 因为我们讨论的是不终止的计算,所以定

我知道其中有两种说法是正确的,但我不知道哪一种是正确的

e
[Int]

  • 存在
    e
    这样的情况:
    头e
    的评估不会完成,但
    最后一个e

  • 存在
    e
    这样的情况:对
    最后一个e
    的评估不会完成,但
    头e
    将完成

  • 存在
    e
    这样的情况:
    长度e
    的评估不会完成,但
    最后一个e
    将完成

  • 我似乎很清楚2是真的,但我看不出1或3怎么可能是真的


    我的想法是,为了计算一个列表的长度,你需要得到最后一个列表,使1和3不可能

    因为这是一个测试问题,我不会直接回答它,但这里有一些提示;如果你自己解决这个问题会更好

    因为我们讨论的是不终止的计算,所以定义一个这样的计算可能会很有用。但是,如果这让您感到困惑,您可以放心地忽略这一点,只参考不包括这一点的示例

    -- `never` never terminates when evaluated, and can be any type.
    never :: a
    never = never
    

    问题1 考虑列表
    [never,1]
    ,或者@chi建议的列表
    [last[1..],1]


    问题2 考虑列表
    [1..]
    ,或者列表
    [1,从不]


    问题3 考虑
    长度的定义

    length [] = 0
    length (_:xs) = 1 + length xs
    

    在什么条件下,
    length
    不终止?这与
    last
    有什么关系?

    这是家庭作业吗?假设数字文本的类型为
    Int
    ,那么
    myList=[last[1..],2]
    的类型是什么但是我看不见你的眼睛point@pepe22提示:在@chi的
    myList
    :-)上试一下你的三个陈述,先在你的脑子里或纸上写。你的问题真的很模糊。唯一有意义的解读是“选择以下所有满足条件的条件集,
    e::[Int]
    ”。你能澄清一下吗?也许你现在可以自己回答迟浩田的评论了?@robertz博士我不同意,因为1)和2)是矛盾的,2)和3)是矛盾的。我看不出你是如何证明自己的?对于chi给出的示例,
    length[last[1..],1]=2
    ,至少在GHC v8.4.3中是这样。此外,有人说“我知道其中两个陈述是正确的,但我不知道是哪一个”这是一个很好的答案,并感谢您不仅给出了答案!此外,我认为chi的列表对于初学者来说是一个更好的例子,因为每个人都会理解无限列表的最后一个,但你对never的定义有点“高级”。请考虑编辑它的第一张清单:“AJFarmar,你说得对,我太快了。”但问题应该重新措辞,以消除歧义。正如它所说的,对于表达式
    e
    ,其中有两条语句是正确的,它们不可能是正确的。它应该是这样的,对于每个语句,都存在一个语句
    e
    。。。