我正在写一个函数,它从列表中获取元素并返回它们。为什么haskell中的“需要”更改数据类型?
很简单,我以为。但是,当使用“走”在例如:take 2 [1.2,3,4]
返回:[1.2,3.0]
当我真正想[1.2, 3]
我想用于创建列表并削减不必要的小数进入功能,但我不能让我的头周围看到Haskell没有接受我随x &圆(X)在
function :: [a] -> [a]
function(x:xs)
if x == round(x) = round(x):function xs
else x:function xs
所以比较:有没有简单的解决方案? B:为什么Haskell比较x与round(x)?
您是否试过'[1.2,3]'没有'take'?如果没有,我建议你这样做。这根本不是“错误”。 –
它看起来像你试图用来定义'function'的语法不正确。表达式'x == round(x)'是非常好的,但是语法如下所示:'function(x:xs)| x == round(x)= round(x):function xs;函数(x:xs)= x:函数xs' –
@TannerSwett表达式'x == round x'很好,但没有具体的类型(在标准库中),你可以给'x'它类型正确。 –