返回给定特定整数输入的字符串

时间:2015-04-04 20:55:04

标签: haskell functional-programming ghc

我正在尝试学习Haskell,在尝试编写一个简单的函数时遇到了一个问题。使用以下代码:

squarenumber x = if x<10
                then x^2
                else return "Input is too large, please input a value less than 10."

问题似乎与函数的else部分有关。如何修改此函数,以便在输入大于10时返回字符串?

1 个答案:

答案 0 :(得分:8)

你无法做你想做的事。在Haskell中,表达式应该具有相同的类型。在某些情况下不应该是Integer而在其他情况下String不应该是Either。但是您可以使用squarenumber :: (Ord a, Num a) => a -> Either String a squarenumber x = if x < 10 then Right (x^2) else Left $ "Input is too large, please input a value less than 10." 数据类型获得您想要的内容:

return

另外,你将Haskell的return与命令式语言混淆。请注意,在Haskell中{{1}}具有完全不同的含义。它是Monad类型类的方法之一。