IIRC ::
を使用するハスケルの選択は(不幸な)歴史的事故のビットです。 HaskellはMirandaの大部分を拠点としていましたが、タイプには::
も使用されています。 Mirandaの作者は、実際にはcons operatorが:
であることを望んでいたので、もっと普遍的に使うと思っていたので、入力オペレータは::
に委任されなければなりませんでした。
それ以外の場合、タイプ上のすべての文献(たとえHaskellについて話しているものでも)が:
を使用するので、実際には良いアイデアであるとは証明されていません。最も近いpaper at handとして、すべてのサンプル(ハスケル)コードに二重コロンが使用されていますが、数学的判断(10ページなど)はすべて従来のシングルコロンに従います。 (:それはhereでしたが、私は右の時間を得るために全体のことを聞くのが面倒だEDIT)の時には、多くの、それを
は、私がどこかで聞いた覚え考えますFP研究の人々は、ミランダを非常に明確に定義して、怠惰な機能を持つ純粋な言語に関する研究論文が共通の言葉を持って自分のアイデアについて話すことを望んでいました。ミランダのデザイナーはこれを望んでいませんでしたが、ミランダと非常に似ている別の言語でこれが行われたならば、彼らはうまくいくと言っていました(両国の利益のために2つの言語は依然として区別可能です) 。それがハスケル委員会の出発点でした。
FWIWでは、値のレベルと型のレベルの間にもう少し余裕があるため、実際には '::'はトップレベルのシグネチャをよりうまく読み込めると考えています。 'not:Bool - > Bool'は解析されるように見えます。(Boolではありません) - > Bool'です。しかし、既存の中置演算子の多くは同じ問題を抱えています。私はそれが基本的にあなたが慣れていることに関係していると思います。 – leftaroundabout
型注釈が実際の値であるとふりかけると、 '::'はある意味の意味を持ちます。それは他の中核コンストラクタのように ':'で始まり、型注釈の「実」シンボルに先行し、名前と型を引数として与えられ、型注釈を返します。 – chepner