{-# title: Bunny 0.9.0 Release Note -} # Bunny 0.9.0 リリースノート Date: 2020-12-15 Version 0.9.0 は [Bunny](Bunny) の最初の pre-release です。 Bunny は Haskell 2010 仕様を満たすことを目標にしていますが、 現状では多くの未実装機能や不具合が残っています。 Version 1.0.0 までには、これらを全て修正する予定です。 ## Haskell 2010 仕様を満たしていない点 現在の版がまだ Haskell 2010 仕様を満たしていない点のうち、 主なものを以下に挙げます。 残念ながら、現状では網羅的な検査ができていないこともあり、 Haskell 2010 に満たない点のリストアップ自体が正しくできていません。 なお、暗黙のうちに import される Standard Prelude についても、 Haskell 2010 仕様に満たない部分があります。それについては、次節で述べます。 - import 宣言未実装 - 識別子に Unicode を使用できない(文字列リテラル、文字リテラルには使える) - Derived Instance の対応が不完全 - フィールドラベル付きのデータ型に対応していない - 4要素以上のタプル未実装 - defaulting に対応していない (Num から Integer のみ対応) - newtype に対応していない - monomorphism restrictsion 未実装 - Irrefutable pattern (~ apat) に対応していない - Class 宣言の前方参照ができない(例:Show クラスの定義を Num クラスの定義より後には書けない) ## Standard Prelude 現在暗黙のうちに import される Prelude は、以下にあげる点で Haskell 2010 仕様を満たしていません。 - まだ定義されていないクラス、インスタンス、関数などがある - すべての識別子が Export されてしまうため、本来 Export されるべきではない識別子が定義済となってしまっている - 組み込み関数が名前空間を汚している 参照:[lib/Prelude.hs](https://github.com/unnohideyuki/bunny/blob/f6655abfb9efdf88b62d84ac72707752072c177f/compiler/lib/Prelude.hs) ### 未定義のクラス - RealFloat ### 未定義のインスタンス - Read [a] - Read Float - Read Double - Read (a, b), Read (a, b, c) ... ### 未定義の関数など - type FilePath - data IOError - ioError - userError - catch - putChar - putStr - getContents - interact - readFile - writeFile - appendFile - readIO - readLn ### 本来 Export されるべきではない関数 以下の関数は、本来は Prelude.hs の内部のみで用いられるものですが、 現状は export 制御が未実装であるために定義済となってしまっている。 showLitChar signum'', signum' nonnull, digitToInt, readInt, readDec, readSigned numericEnumFrom, numericEnumFromThen, numericEnumFromTo, numericEnumFromThenTo isSpace, isDigit, isOctDigit, isHexDigit, isUpper, isAlpha, isAlphaNum, lexLitChar, lexDigits Ratio, (:%), (%), ratPrec, reduce, numerator, denominator ### 組み込み関数が名前空間を汚している 現在の実装では、組み込みのプリミティブ関数のモジュール名が Prim となっていて、 本来であればユーザが自由に使用できる名前空間を汚してしまっています。 いまは、まだ import 機能自体が未実装であるため実害がないのですが、 これは version 1 までに改善します。