如果长度为2,则使用Haskell

如果长度为2,则使用Haskell,haskell,Haskell,我是Haskell的新手,不知道如何解决If-Else问题,例如: function str = if ((length str) = 2) then (....) 在java中,我们将: if (str.length =2){ str = "2"} else { str ="1"} 您如何用haskell编写它?您可以使用Guards: fnc :: String -> String fnc s | length s == 2 = ..

我是Haskell的新手,不知道如何解决If-Else问题,例如:

function str = if ((length str) = 2) then (....)
在java中,我们将:

if (str.length =2){
    str = "2"}
else { str ="1"}
您如何用haskell编写它?

您可以使用Guards:

fnc :: String -> String
fnc s | length s == 2 = ...
      | otherwise = ...


或条件

fnc :: String -> String
fnc s = if length s == 2 then ... else ...

还可以使用模式匹配,等等


在Haskell中有几种实现条件的方法(例如,
的情况下)。

你所说的“绕过if-Else”是什么意思?现在还不清楚您的示例应该说明什么。请参见JavaExample,因为您使用的是赋值,所以它仍然不是一个好的示例。你想解决的实际问题是什么?(您可能应该看看上的提示。在用Java思考的同时尝试用Haskell编程只会令人沮丧。)您的问题有点困惑,因为:在Haskell示例中,您没有包含
else
分支,但在Haskell中您需要一个分支。另一方面,在Java中包括
else
分支,但不需要它。也就是说,
void foo(String str){if(str.length==2){str=“2”}else{str=“1”;}
(我假设这是您的意思,因为您的代码不完整并且包含语法错误)完全等同于
void foo(String str){/*不做任何事*/}
。Haskell的等价物是
foo
。是的,你是对的!以前像
String->Int
那样使用过它,但把它改错了。