我一般都是haskell和函数式语言的新手,但我有一些OO语言背景
有人能告诉我像这样的代码的haskell相当于:
int x = 5
x = doubleThis(x)
function doubleThis(x){
return x*x
}
所以,如果我有一个功能:
doubleThis :: Integer -> Integer
doubleThis x = x*x
我怎么能这样做,如果我跑了这个:
let x = 5
doubleThis x
output> 25
x
output> 25
我最初的想法是它会像:
let x = doubleThis x
但呃....这似乎是一个无限循环
如果你想通过将一个元组连接到一个列表来告诉我如何做到这一点,那么奖励分数
答案 0 :(得分:2)
int x = 5
x = doubleThis(x)
function doubleThis(x){return x*x}
你似乎已经想出了如何做最后一行。第一行。
无法做的是中间线。 Haskell故意不允许这样做。您可以做的是
x1 = 5
x2 = doubleThis x1
这完全没问题。但是,您无法更改现有变量的值。这是一个深思熟虑的设计选择。
不要试图用#34来思考;我有这个命令式代码,我如何在Haskell中写一些完全相同的东西?" Haskell的整个点就是你以完全不同的方式做事。相反,思考"我实际上试图解决什么问题?在Haskell中最明智的做法是什么?"