28
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Haskell で条件分岐

Last updated at Posted at 2015-03-22

可読性のためにいろいろ使われているが、全てcase 式の構文糖衣である。

case

すべての条件はcase で表せる。ただし可読性を優先してそれぞれ使い分けることになる。
caseでは、パターンマッチまたは式の評価を行える。

パターンマッチとは、引数にとるなどした値が、どのコンストラクタで作られたかによって場合分けを行う方法を指す。

case  of
	パターン1 -> 1
	パターン2 -> 2
	| ガード条件1 -> 3
	| ガード条件2 -> 4
	| ガード条件3 -> 5

if

条件の真偽によって宣言を分けたい、という意味合いが強ければifが適している。

if 条件式 then 1 else 2

ガード

幾つかの条件を優先度の高い順に指定して、真になったタイミングで宣言を分岐させたい、という意味合いならばガード。並列的に複数の条件を記述したければこちらだろうか。

関数 引数		
		| ガード条件1 = 1
		| ガード条件2 = 2
        | otherwise = 3

if をcase に変換する

条件式の結果がTrue コンストラクタにマッチするか、False コンストラクタにマッチするかの場合分けを行っている。

case 条件式 of
	True  -> 1
	False -> 2

ガードを case に変換する

パターンマッチは行っていないので無視していて、ガードのみ使っている。

case () of
	_
		| ガード条件1 -> 1
		| ガード条件2 -> 2
		| ガード条件3 -> 3
28
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?