通过模式匹配替换列表元素

时间:2015-10-06 14:21:41

标签: haskell pattern-matching

此函数采用列表,索引号和替换字符串。它遍历列表并用替换字符串替换给定索引处的元素。我不确定的是最后一行中的模式试图捕获的情况。

-- e.g., listSet1 ["a","x","k"] 2 "d" = ["a", "d","k"]
listSet1 (x:xs) 1 y = y:xs
listSet1 (x:xs) n y = x : listSet1 xs (n-1) y
listSet1 xs _ _ = xs

2 个答案:

答案 0 :(得分:2)

最后一个模式处理列表的结尾。除非你尝试替换列表中不存在的索引,否则你不会注意到它(试试吧!)

答案 1 :(得分:1)

您可以而且应该在每个Haskell文件的顶部添加以下行之一:{-# OPTIONS_GHC -Wall #-}{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}。如果你有其中一个,它们会超过module Foo where行。有了其中一个,评论出最后一个模式会给你一个警告,说明究竟什么是不匹配的。