(我是stackoverflow的新手,我会尽力问我的问题,如果不这样做,请随时调查我。)
所以,我是Haskell的新手,我正在做一些练习来掌握它。
我已经解决了一半的练习,即用一个辅音+'o'+辅音替换弦乐中每一个辅音的出现,然后返回新的弦乐,这里是代码:
hurdyGurdy c = concat [ if n `elem` "AEOUYaeouy" then [n] else [n, 'o', n] | n <- c]
虽然我完全坚持将hurdyGurdy字符串变回相应的正常字词,即“HoHelollolo”应该变为“Hello”。
所以我想我知道每个辅音都会有一个下一个字符'o',如果我可以删除/删除这些字符,那么这些都是笨拙的。或者如果我用n替换整个[n,'o',n]。虽然我只是不知道该怎么做。
我猜第一种方式最简单,但我如何摆脱当前元素和下一个?
这不完全是作业,它是热身作业..!
编辑:我已经像这样解决了..看你不太好看
unRovarsprak ("") = ("")
unRovarsprak (c1:'o':c2:xs)
| isConsonant c1 = c1 : unRovarsprak xs
| otherwise = xs
unRovarsprak (c1:xs)
| c1 `elem` vokaler = c1 : unRovarsprak xs
| otherwise = xs
答案 0 :(得分:2)
你可能想要使用这种类型的基础:
unHurdyGurdy (c1:'o':c2:xs)
| isConsonnant c1 && c2 == c1 = c1 : unHurdyGurdy xs
这留给读者练习:
isConsonnant
hurdyGurdy
的结果的字符串)