Ang*_*ico 8 haskell pattern-matching parse-error
尝试在文件中加载函数:
Prelude> :load "prova.hs"
prova.hs:37:9: Parse error in pattern: n + 1
[1 of 1] Compiling Main ( prova.hs, interpreted )
Failed, modules loaded: none.
Prelude>
Run Code Online (Sandbox Code Playgroud)
这应该创建一个包含重复值x的n倍的列表:
ripeti :: Int -> a -> [a]
ripeti 0 x = []
ripeti (n+1) x = x:(ripeti n x)
Run Code Online (Sandbox Code Playgroud)
它出什么问题了?
Chr*_*lor 10
您的代码使用了一种名为"n + k模式"的东西,Haskell 2010不支持它们(Haskell 98支持它们).
你可以在这个问题上阅读更多关于它的内容.
要使代码工作,您可以编写
ripeti :: Int -> a -> [a]
ripeti 0 x = []
ripeti n x = x : ripeti (n-1) x
Run Code Online (Sandbox Code Playgroud)
请注意,如果您为其提供负值,则不会终止n,因此我宁愿定义
ripeti :: Int -> a -> [a]
ripeti n x | n <= 0 = []
| otherwise = x : ripeti (n-1) x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |