我是哈斯克尔的新手.在哈斯克尔做这样的事情会是一个好方法吗?
var1 = //can be true or false
if(var1==true)
{
//return someething
}
else
{
//
}
Run Code Online (Sandbox Code Playgroud)
Haskell是一种功能性和声明性语言.这意味着通常没有太多"做某事".有更多的计算东西并返回它.
这可能看起来像挑剔,但例如在Haskell中,无法设置变量两次:一旦为其分配表达式(本身不是值),就不能将其设置为不同的值.
如果要返回某些内容,通常使用模式匹配.例如:
f :: Bool -> String
f True = "Yes"
f False = "No"
Run Code Online (Sandbox Code Playgroud)
这在Java/C#/ ...中有点等同于:
public String f (boolean var1) {
if(var1) {
return "Yes";
} else {
return "No";
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,Haskell 也是懒惰的:如果返回函数调用或其他任何东西,则不会立即评估该函数调用:只有在必要时才会评估调用.
如何进行I/O可能会出现问题.为此,有一个I/O monad的概念.monad是一种函数式编程技术,可以执行某种评估顺序.
但是函数式编程因此需要与命令式编程不同的"思维模式" :您不会根据一个接一个地完成的命令来考虑程序,而是在将函数组合在一起以生成给定输入的输出方面更多.像通常是数学家或物理学家一样.例如,你构造一个函数,在给定物体的质量和速度的情况下,计算该物体的动能.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |