此函数采用列表,索引号和替换字符串。它遍历列表并用替换字符串替换给定索引处的元素。我不确定的是最后一行中的模式试图捕获的情况。
-- 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
答案 0 :(得分:2)
最后一个模式处理列表的结尾。除非你尝试替换列表中不存在的索引,否则你不会注意到它(试试吧!)
答案 1 :(得分:1)
您可以而且应该在每个Haskell文件的顶部添加以下行之一:{-# OPTIONS_GHC -Wall #-}
或{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
。如果你有其中一个,它们会超过module Foo where
行。有了其中一个,评论出最后一个模式会给你一个警告,说明究竟什么是不匹配的。