GHCIで新しいADTを定義することは可能ですか?
-
27-09-2019 - |
質問
GHCIの新機能についてコメントしている間、GHCIにはタイプの宣言を宣言し、新しいADTタイプを宣言する能力があることを望みました。このページ それは私にできると言った
let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub
どうやら、その同じ種類の構文は、パターンマッチングに対して動作します(例:1 = true; a 2 = false)。
ADTを作成すると、ほぼ完璧になりますか?それが現在可能かどうか誰か知っていますか? ADTスクラッチファイルを作成してリロードするだけですか?
PS誰かがそうする計画があるかどうか知っていますか? GHC(i)の機能要求はありますか?
また、私はそのオープンソースを知っていますが、現在、GHC(i)をハッキングするほど賢くありません。
解決
いいえ、しかし、HBI(以前の通訳)で新しいタイプを定義できます。 HackageのGHCIライブラリを介して、これを取り戻すことについての議論があります。
他のヒント
GHCIで明示的なマルチラインコードを行うこともできることに注意してください :{
と :}
:
http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html
これは、GHCバージョン7.4.1の時点で追加され、リリースされました 2月に戻ります:
jcp@butler:~$ ghci
GHCi, version 7.6.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> data Test = Foo | Bar | Baz deriving (Read, Show)
Prelude> Foo
Foo
Prelude> read "Bar" :: Test
Bar
Prelude> :t Baz
Baz :: Test
いいえ、GHCIで新しいタイプを定義することはできません。
したがって、はい、これらの定義をファイルに配置する必要があります。
所属していません StackOverflow