替换Haskell列表中的元素模式

替换Haskell列表中的元素模式,haskell,Haskell,(我是stackoverflow的新手,我会尽我最大的努力恰当地问我的问题,如果我不这样做,请随时调查我) 所以,我是哈斯克尔的新手,我正在做一些练习来掌握窍门 我已经解决了一个练习的一半,就是用这个辅音+o'+那个辅音替换字符串中出现的每个辅音,然后返回新字符串,代码如下: hurdyGurdy c = concat [ if n `elem` "AEOUYaeouy" then [n] else [n, 'o', n] | n <- c] 您可能需要使用排序的基础: unHurdyG

(我是stackoverflow的新手,我会尽我最大的努力恰当地问我的问题,如果我不这样做,请随时调查我)

所以,我是哈斯克尔的新手,我正在做一些练习来掌握窍门

我已经解决了一个练习的一半,就是用这个辅音+o'+那个辅音替换字符串中出现的每个辅音,然后返回新字符串,代码如下:

hurdyGurdy c = concat [ if n `elem` "AEOUYaeouy" then [n] else [n, 'o', n] | n <- c]

您可能需要使用排序的基础:

unHurdyGurdy (c1:'o':c2:xs)
  | isConsonnant c1 && c2 == c1 = c1 : unHurdyGurdy xs
这留给读者一个练习:

  • 书写
    isconsonant
  • 处理元音
  • 处理模式匹配失败(不是hurdyGurdy的结果的字符串)

hohelollo
Hohelollolo
?好的,第二个,Hohelollolo,刚刚编辑!解决得好!在粘贴的代码中,请注意,
”周围不需要括号(作为参数或返回值)。那么我不太确定最后一行的作用是什么,但这可能超出了你在这里提出的问题。所以我猜我可以用c1
notElem
元音替换isconsant,这样就可以尝试了!干杯
unHurdyGurdy (c1:'o':c2:xs)
  | isConsonnant c1 && c2 == c1 = c1 : unHurdyGurdy xs