سؤال

ووAPI و Core حدات اديسون هي تنفيذ هاسكل من بيانات وظيفية بحتة هياكل

هل F # وهياكل بيانات .NET الأم تغطية حالات الاستخدام في اديسون API و Core بما فيه الكفاية؟

هل سيكون هناك أي فائدة في محاولة لميناء الوحدات API وCORE هاسكل إلى F #

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

المحلول

وأنا لم أقرأ ورقة على اديسون ، ولكن إذا كان شيء أكثر من تنفيذ هاسكل من تراكيب البيانات الوظيفية البحتة، لا من الأصوب لميناء رمز SML هذا هو في الكتاب / الأطروحة؟ وينبغي أن يكون أسهل من ترقية كود هاسكل، الذي يجب المشروح للصرامة، في حين F # سوف تضطر إلى المشروح للالكسل.

واللغة المستخدمة من قبل الكتاب هو SML مع ملحقات بناء الجملة من أجل تقييم كسول. F # يوفر نصف تلك التمديدات أصلا:

> let x = lazy 12;;
val x : Lazy<int> = <unevaluated>
> match x with
  | Lazy(n) -> n;;
val it : int = 12
> x;;
val it : Lazy<int> = 12

لتحويل تدوين fun lazy الكتاب، تغيير هذا:

fun lazy plus ($m, $n) = $m + n

لهذا:

let plus (m',n') = lazy (
  match (m',n') with
  | (Lazy(m), Lazy(n)) -> (lazy (m + n)).Force())

و(راجع صفحة 33 في الكتاب). الخلافات من بين SML وF # هي تركيب بسيط، وبالتالي فإن الترجمة يجب أن تكون سهلة.

وأما عن ما إذا كان من المفيد أن معظم هياكل البيانات في كتابه Okasaki هم متخصصة للغاية، لذلك فإنه من غير المحتمل وجودها بالفعل في .NET، حتى مع F # الصورة مجموعة غير قابل للتغيير وخريطة. سيكون من المفيد للشعب التي تحتاج إلى تلك هياكل البيانات.

نصائح أخرى

وإعادة النظر في هذه المسألة أشهر في وقت لاحق، وألاحظ أن

http://lepensemoi.free.fr/index. فب / العلامة / بحتة وظيفية-هياكل البيانات

وشخص نفذت الكثير منهم على هذا بلوق.

وأنا لم تتبع الارتباط، على الرغم من أنني لا يقل عن familiarty صغيرة مع العمل أو Okasaki. ولذلك فإن هذا الحل الكامل هو المضاربة بعنف (قد أكون قبالة قاعدة في الافتراضات نظري حول ما هو في اديسون API).

وأتوقع أن هناك "بعض الفوائد" بمعنى أن الناس مثل 'تطبيقات إشارة من هياكل البيانات FP المشتركة' في 'لغات جديدة للمساعدة في تعلم لغات جديدة.

وأما بالنسبة للاستخدام في الممارسة (بدلا من علم أصول التدريس)، وأتوقع أن بعضها مفيد، رغم أن هناك بعض F # واجهات برمجة التطبيقات صافي التي قد تكون مفيدة كما أو أكثر فائدة للعديد من السيناريوهات. الزوجين دفعات "الرئيسية للتداخل وظائف اعتقد ان هي F # مجموعات ثابتة (مجموعة والخارطة)، وكذلك صافي 4.0 <لأ href =" http://msdn.microsoft.com/en-us/library /system.collections.concurrent(VS.100).aspx "يختلط =" نوفولو noreferrer "> المجموعات المتزامنة (مثل ConcurrentQueue).

وبالطبع ستجد أيضا بعض قصاصات على شبكة الإنترنت، مثل <أ href على جومو و= "http://blogs.msdn.com/jomo_fisher/archive/2007/12/12/strange-confluence-an-immutable -queue في وf.aspx "يختلط =" نوفولو noreferrer "> غير قابل للتغيير طابور .

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