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

Haskell 返回给定特定整数输入的字符串,haskell,functional-programming,ghc,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." squarenumber x=如果x你不能做你想做的事。在Haskell中,表达式应具有相同的类型。在某些情况下,它不应该是Integer,

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

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

squarenumber x=如果x你不能做你想做的事。在Haskell中,表达式应具有相同的类型。在某些情况下,它不应该是
Integer
,在某些其他情况下,它不应该是
String
。但是可以使用
数据类型实现您想要的:

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."
squarenumber::(Ord a,Num a)=>a->任一字符串a
平方数x=如果x<10
然后向右(x^2)
否则左$“输入太大,请输入小于10的值。”

此外,您还将Haskell的
返回
与命令式语言1混淆。请注意,在Haskell
中,return
具有完全不同的含义。它是Monad typeclass的方法之一。

您不能随心所欲。在Haskell中,表达式应具有相同的类型。在某些情况下,它不应该是
Integer
,在某些其他情况下,它不应该是
String
。但是可以使用
数据类型实现您想要的:

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."
squarenumber::(Ord a,Num a)=>a->任一字符串a
平方数x=如果x<10
然后向右(x^2)
否则左$“输入太大,请输入小于10的值。”
此外,您还将Haskell的
返回
与命令式语言1混淆。请注意,在Haskell
中,return
具有完全不同的含义。它是Monad类型类的方法之一