模式n解析错误
问题描述:
我是新来的哈斯克尔。 得到一个解析错误,不知道什么是错的。模式n解析错误
fromDecTo :: (Int -> Int) -> [Int]
fromDecTo (n x) | (n < x) = [n]
| otherwise = fromDecTo (n `div` x) ++ [n `mod` x]
这应该将十进制数转换为基数为x(a.e.十六进制)的数字。
请帮帮我。
答
fromDecTo :: (Int -> Int) -> [Int]
这是具有一个的说法,从整数到整数功能的功能。这是不是你想要的:你想有两个参数的函数,即
fromDecTo :: Int -> Int -> [Int]
同样,图案
fromDecTo (n x)
表示将函数n
到x
,然后应用fromDecTo
到的结果结果。这是不是你想要的,带有两个参数与
fromDecTo n x
做最后要注意,即使它不是习惯这样做,就可以添加括号,但相反的关系。上面所示的相同类型的可写入
fromDecTo :: Int -> (Int -> Int)
其中强调功能在Haskell咖喱的事实:一个二进制函数实际上是只服用一个参数,第一,并返回一个函数采取一个的功能等论点,第二,最后返回结果。
类似的,而不是
fromDecTo n x
因为n
是后应用于fromDecTo
,然后再x
我们可以写
(fromDecTo n) x
。
答
在代码中有几个问题。这里是你想要达到的目标:
fromDecTo :: Int -> Int -> [Int]
fromDecTo n x | (n < x) = [n]
| otherwise = fromDecTo (n `div` x) x ++ [n `mod` x]
谢谢!现在工作 – 04k