Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?

プログラミングErlang - 式

4章あたり。 式の定義、式の用途。

式と式列

    • Erlang では、評価すると値が得られるものは何でも式と呼ばれる。
    • catch、if、try. . . catchなども式になる
    • レコード宣言やモジュール属性などは評価できないので、式ではない。
  • 式列
    • 式をカンマで区切って並べたもの
    • 式列は-> 矢印のすぐ後で使える
    • 式列E1, E2, ..., En の値は、並んだ中で最後の式の値と定義されている
    • この値は、E1 、E2 などの値を計算して得られる束縛状態を使って計算される。

ブロック式

begin とend を使った式。

begin
Expr1,
...,
ExprN
end

一連の式を節のボディ部のようにまとめるにはブロック式を使う。
begin ... end ブロックの値は、ブロックの最後の式の値になる。
ブロック式は、構文上の理由で単一の式が必要だが複数の式を並べたものをその場所に書きたい場合に使う。

ブール式

  • Erlang には特にブール型のようなものはない。
  • 代わりに、true アトムとfalse アトムは特別に解釈され、ブール値リテラルを表すために使われる。
  • ブール式は4つある
1> not true.
false
2> true and false.
false
3> true or false.
true
4> (2 > 1) or (3 > 4).
true

短絡型ブール式

短絡型ブール式とは、必要な場合だけ引数が評価されるブール式

  • 「短絡型」ブール式は2 種類ある
    • Expr1 orelse Expr2
      • Expr1 が評価される。Expr1 の評価結果がtrue ならばExpr2 は評価されない。Expr1 の評価結果がfalse ならばExpr2 が評価される。
    • Expr1 andalso Expr2
      • Expr1 が評価される。Expr1 の評価結果がtrue ならばExpr2 が評価される。Expr1 の評価結果がfalse ならばExpr2 は評価されない。

※ これらの短絡型ブール式にそれぞれ対応する(短絡型でない)ブール式(A or B とA and B )の場合は、
最初の式を評価するだけで式の真偽値がわかる場合であっても必ず両方の引数が評価される。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment