質問

ここでは、関数定義を持っています:

let f x = x + 3;;

ここで表現されます:

let g = 4;;

ただ、引数を取らないように一定の機能と考えることgてもらえますか?どんな違いがありますか?

役に立ちましたか?

解決

はい - ビュー(Haskellで練習のような)の完全に機能的な観点から、すべてが関数である(本当にすべてを)。

、以来、純粋に機能的言語を禁止し、の変更のいずれかの種類、任意の矛盾を負いません。この定義ます。

  

何か違いはありますか?

さて、OCamlのは純粋に機能的ではありません。これは、関数が一定値の定義から少し異なる副作用を実行することを許可されることを意味します。

このコード(Fのここで# - しかし、Camlの中に非常に似ては)完全に有効になります。

let name = 
    Console.Write("Enter your Name: ")
    Console.ReadLine()

他のヒント

との間の差
let f() = expr

let f = expr

非純粋な言語では、「式」の効果」は後者の定義サイトで一度だけ前者の場合は、すべての「呼び出しサイト」で実行し、ということです。これは、二つの間には非常にいくつかの相違点の一つであり、おそらく最も重要なています。

技術的には、変数の定義は、パターンが一致している。

let [x] = someList
let y::zs = someList
let (Some z) = someOption
let _ = someIgnoredExpr
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top