haskell-jp / questions #104 at 2023-08-19 22:15:23 +0900

パターンマッチで分けられた関数定義の一行一行`f p1 p2 ... pn = e`のことを何と呼びますか?
Haskellのいくつかの文献では`equation`と呼ばれているようですが、`clause`というのも見かけます。
日本語の文献では対応する用語が見当たらなかったのですが、日本語だと何というのでしょうか?

また、関数定義をデータ型として表現するときに、
data FunDecl = FunDecl String [([Pattern], Expr)]

と書くとして、`([Pattern], Expr)` にはどんな名前をつけますか?
case式`case e of {p1 -> e1; p2 -> e2; ... pn -> en}` に含まれる`p1 -> e1`は、HaskellではAlternativeと呼ばれていますが、パターンが複数になると何と呼ばれるのでしょう?
日本語については存じませんが、Haskell 2010の仕様でも「clause」と呼んでいると思しき箇所がありますね。
Note that all clauses defining a function must be contiguous, and the number of patterns in each clause must be the same.
https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#dx10-84001
Language Reportはclauseになっていましたか。S.P.Jonesの論文ではequationになっていました。
日本語にするとしたら節?でしょうか。
こんな質問をしたのは、Haskellの仕様を説明するときにclauseにあたる用語がないと不便だと感じたからです。例えば:
Haskellでは、関数定義の各節の引数の個数は等しくなければならない。
Template Haskellでも関数定義の方はClauseになっていました
https://hackage.haskell.org/package/template-haskell-2.20.0.0/docs/Language-Haskell-TH.html#t:Clause

一方case ofの方はMatchという名前になってました(Clauseという型名と衝突するから仕方なく呼び分けてるだけな気もします)
https://hackage.haskell.org/package/template-haskell-2.20.0.0/docs/Language-Haskell-TH.html#t:Match
「Match」は日本語にするの難しそうです
TemplateHaskellは確認していませんでした。
どうもありがとうございます。