هل من الممكن تحديد ADTs جديدة في GHCI
-
27-09-2019 - |
سؤال
أثناء التعليق على ميزات جديدة في GHCI ، تمنيت أن يكون لدى GHCI القدرة على إعلان التصريح النوع وإعلان أنواع ADT الجديدة ، وأبلغ شخص ما أنه كان ممكنًا بالفعل ، وبعد البحث وجدتهذه الصفحة الذي أخبرني أنه يمكنني فعل
let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub
يبدو أن نفس النوع من بناء الجملة يعمل لمطابقة الأنماط (على سبيل المثال ، دع 1 = صحيح ؛ A 2 = خطأ).
إنشاء ADTs من شأنه أن يجعلها مثالية تقريبا؟ هل يعرف أحد ما إذا كان ذلك ممكنًا حاليًا؟ هل يجب أن أقوم بعمل ملف ADT Scratch وإعادة تحميله؟
ملاحظة: هل يعرف أحد ما إذا كانت هناك أي خطط للقيام بذلك؟ هل هناك طلبات مميزة لـ GHC (I)؟
كما أنني أعلم مصدره مفتوحًا ، لكنني لست ذكيًا بما يكفي للاختراق على GHC (I).
المحلول
لا ، ولكن يمكنك تحديد أنواع جديدة في HBI (مترجم سابق). هناك نقاش حول إعادة هذا الأمر ، عبر مكتبة GHCI على Hackage.
نصائح أخرى
لاحظ أنه يمكنك أيضًا القيام برموز متعددة الصريح في GHCI مع :{
و :}
:
http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html
تمت إضافة هذا اعتبارًا من الإصدار 7.4.1 من GHC ، والذي تم إصداره مرة أخرى في فبراير:
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.
لذا نعم ، ستحتاج إلى وضع هذه التعريفات في ملف.