سؤال

أثناء التعليق على ميزات جديدة في 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.

لذا نعم ، ستحتاج إلى وضع هذه التعريفات في ملف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top