【问题标题】:How does Haskell evaluate this function which undoes list intercalation?Haskell 如何评估这个取消列表插入的函数?
【发布时间】:2014-06-07 13:43:17
【问题描述】:

我试图了解 Haskell 如何评估 sep [1, 2, 3, 4, 5] 以获取 ([1, 3], [2, 4, 5]) 其中:

sep [ ] = ([ ], [ ])
sep [x] = ([ ], [x])
sep (x1:x2:xs) = let (is, ps) = sep xs in (x1:is, x2:ps)

我是这样开始的:

sep [1, 2, 3, 4, 5] = let (is, ps) = sep [3, 4, 5] in (1:is, 2:ps)

然后呢?

【问题讨论】:

  • 下一步是匹配sep [3, 4, 5]sep (x1:x2:xs) = ...
  • 好的,所以。 1) sep [1, 2, 3, 4, 5] = let (is, ps) = sep [3, 4, 5] in (1:is, 2:ps) 2) sep [3, 4, 5] = let (is, ps) = sep [5] in (3:is, 4:ps) 3) sep [5] = ([], [5]) In 2) sep [3, 4, 5] = let (is, ps) = ([], [5]) 在 (3:is, 4:ps) 中。知道如何继续吗?

标签: haskell equational-reasoning


【解决方案1】:

我终于明白了。

1) sep [1, 2, 3, 4, 5] = let (is, ps) = sep [3, 4, 5] in (1:is, 2:ps)

2) sep [3, 4, 5] = let (is, ps) = sep [5] in (3:is, 4:ps)

3) sep [5] = ([], [5])

在 2) sep [3, 4, 5] = let (is, ps) = ([], [5]) in (3:is, 4:ps) = ([3], [4, 5])

在 1) sep [1, 2, 3, 4, 5] = let (is, ps) = ([3], [4, 5]) in (1:is, 2:ps) = ([1, 3], [2, 4, 5])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多