[英]Haskell Instance of Num issue
此代码有什么问题?
rectangle :: Int -> Int -> String
rectangle i j
| i < 0 || j < 0 = ""
| otherwise = concatenate(i) ++ "n/" ++ (rectangle i) j-1
concatenate :: Int -> String
concatenate i
| i <= 0 = ""
| otherwise = "*" ++ concatenate(i-1)
这是我得到的错误
ERROR line 3 - Instance of Num [Char] required for definition of rectangle
这应该是它所做的(例如)
Main> putStr (rectangle 3 4)
****
****
****
您迟早会习惯于Haskell语法。 这里
(rectangle i) j-1
被解析为
(rectangle i j) - 1
但是你真的想要:
rectangle i (j-1)
此代码应该起作用。
rectangle :: Int -> Int -> String
rectangle i j
| i < 0 || j < 0 = ""
| otherwise = concatenate i ++ "\n" ++ rectangle i (j-1)
concatenate :: Int -> String
concatenate i
| i <= 0 = ""
| otherwise = "*" ++ concatenate (i-1)
对此的评论很少:
concatenate(i) ==> concatenate i
-- You don't need to put parameters in brackets in haskell.
(rectangle i) j-1 ==> rectangle i (j-1)
-- See Ingo's explanation
"n/" ==> "\n"
-- That should be obvious
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.