2
私は、必須のブロック区切り記号のようなエリクサーに "do/end"表記を使用しています。 (換言すれば、do
は、Cのような言語の{
のようなものであり、end
は}
のようなものです)。エリクシールとハスケルの "do"表記
これは何が起こっているのか正確な説明ですか?あるいは、Haskell do
表記のように、命令的なコーディングを可能にするモナドの構文的な砂糖を構成していますか?
私は、必須のブロック区切り記号のようなエリクサーに "do/end"表記を使用しています。 (換言すれば、do
は、Cのような言語の{
のようなものであり、end
は}
のようなものです)。エリクシールとハスケルの "do"表記
これは何が起こっているのか正確な説明ですか?あるいは、Haskell do
表記のように、命令的なコーディングを可能にするモナドの構文的な砂糖を構成していますか?
はい、いいえ。 do
/end
は、キーワードリストの構文上の便利な機能です。
if式は以前に書かれた可能性があります。誰かが見たいと思うものは、次のようなものです。
if predicate do
true_branch
else
false_branch
end
これはキーワードリストを使用して記述することもできます。以下は全く同じです。 do
/end
の表記を使用して
if predicate, do: true_branch, else: false_branch
は、コードのブロックを書くとき、私たちは、冗長性を削除することができます。以下の2つのif式は等価です。
if predicate do
a = foo()
bar(a)
end
if predicate, do: (
a = foo()
bar(a)
)
これは関数の定義でも同じです。 def/2
マクロもキーワードリストを使用します。あなたはあなたがgetting startedガイドではこれについての詳細を読むことができ、次の
def foo, do: 5
のような関数を定義することができます意味。