gpt4 book ai didi

Haskell 模式匹配第一部分、中间部分和最后部分

转载 作者:行者123 更新时间:2023-12-02 12:01:54 25 4
gpt4 key购买 nike

所以我想在 Haskell 中做一个简单的字符串反转函数

swapReverse :: String => String  
swapReverse [x] = [x]
swapReverse [x,y] = [y,x]
swapReverse (x:xs:l) = -- pattern match fails here
let last = [l]
middle = xs
first = [x]
in last ++ swapReverse middle ++ first

那么有没有一种方法可以在 haskell 中定义一个具有 firstlast 元素以及 middle 中的所有元素的模式结构?

最佳答案

不,你不能。为什么?因为模式匹配匹配值及其子部分,但列表的“中间”不是列表的子部分。列表[1, 2, 3, 4]1:(2:(3:(4:[]))) ,就其结构而言。所以你想匹配first1last4 ,它们都是列表的子部分,因此不会被取消资格。但是middle你想要的是 2:(3:[]) ,它不是列表的子部分,因此不能匹配。

请注意,我们也不能编写一个模式来同时匹配列表的第一个和最后一个元素。模式的深度在编译时是固定的。

关于Haskell 模式匹配第一部分、中间部分和最后部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com