我是哈斯凯尔的新手。 得到了解析错误,不知道出了什么问题。
fromDecTo :: (Int -> Int) -> [Int]
fromDecTo (n x) | (n < x) = [n]
| otherwise = fromDecTo (n `div` x) ++ [n `mod` x]
这应该将十进制数转换为基数x(a.e.十六进制)的数字。
请帮帮我。
答案 0 :(得分:4)
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
我们可以写
(fromDecTo n) x
因为n
首先应用于fromDecTo
,然后再应用x
。
答案 1 :(得分:0)
您的代码中有几个问题。这是你想要实现的目标:
fromDecTo :: Int -> Int -> [Int]
fromDecTo n x | (n < x) = [n]
| otherwise = fromDecTo (n `div` x) x ++ [n `mod` x]