range-notation

    0热度

    3回答

    我已经定义了以下功能 let repl x n = [x | _ <- [1..n]] 模仿内置的复制功能。 虽然用它进行试验,我发现一个奇怪的事情:repl 10 0评估为[],而repl 10 -1产生一个错误: No instance for (Show (t10 -> [t0])) arising from a use of ‘print’ In a stmt of an inter

    22热度

    2回答

    我在我的一个演讲中遇到了一个练习,这让我对[2,2,2]的输出感到困惑。为什么当输入[2,2 .. 2]时,它会生成一个带有2的“无限”列表。 我理解符号的方式是第一个元素是开始边界,第二个是数字之间的“间隙”,最后一个是列表的结束,换言之,当达到该数字时停止。 如果我的推理是正确的,为什么表达式[2,2,2]不输出[2]?。 我认为Haskell可能会这样评价它; 当打印的 列表中的第一个元素它

    8热度

    2回答

    当评估表达式: *main> [0, 0.1 .. 1] 我其实期望: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] 但是我很惊讶地看到的输出被 [0.0,0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.70