سؤال

عند العمل مع مثيلات مشتقة في Haskell، هل من الممكن استخلاص وظائف لأنواع تعسفية، أم أننا مقصورون على وظائف معينة؟

هل كانت مفيدة؟

المحلول

يمكنك استخلاص حالات الفصول التالية في Haskell 98: EQ، ORD، ENUM، IX، محدود، وقراءة، وإظهار.

استخدام ملحقات GHC، يمكنك أيضا استخلاص مثيلات الفئات التالية: CAMEALE، البيانات، Functor، قابلة للطي وغير قابلة للطي. يوجد أيضا امتداد GHC يسمح بعمل NewType مثيلات من نوع تنفيذه.

لا يمكنك استخلاص حالات الطبقات التعسفية للسبب البسيط الذي لن يعرف هاسكلس كيفية توليد الوظائف اللازمة دون معرفة خاصة حول الفصل المعني.

نصائح أخرى

تقتصر على فصول معينة، من حيث ما يعرفه المحول البرمجي كيفية استخلاص لك. باستخدام Premprocessor، أو قالب Haskell، يمكنك نفسك كود آليات المستقلة الجديدة، إذا كنت تعرف من الأساليب العامة لإنتاج تطبيقات الوظائف لأنواع معينة.

الإجابات الأخرى هي صحيحة. ولكن إذا كنت بحاجة إلى المزيد، فهناك بعض الحزم الموجودة على القلعة التي يمكن أن تتعامل مع المزيد. انا يعجبني البيانات كثيرا، نظرا لأنك يمكن أن تولد شفرة المصدر مباشرة (للتوافق) أو ربطها في قالب Haskell للقيام بذلك في وقت الترجمة. يتم دعم مجموعة واسعة من الفصول بالفعل، ومن السهل جدا إضافة الدعم لوحدك. ملخص: معلومات الإعلان لمكتبة دقيقة لعنة :-)

لإضافة إلى إجابة Don: يتم استدعاء وظيفة مخصصة للميارات البرمجة العامة وهناك الكثير من الأدب حول هذا. قبل Preprocessors والقالب Haskell ليست الحلول الوحيدة؛ انظر إحدى الصحف نظرة عامة أن قائمة الأدبيات للخيارات الأخرى.

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