Fable: انقل مكونات REPL إلى هذا المستودع

تم إنشاؤها على ٢٧ نوفمبر ٢٠١٨  ·  12تعليقات  ·  مصدر: fable-compiler/Fable

لقد تحدثنا عدة مرات حول مكونات REPL. لقد فكرت في إنشاء ريبو مختلف لاستضافة هذه المكونات الأساسية. ولكن بالنظر إلى أننا نقوم بالفعل بإنشاء تجميع FCS + Fable JS هنا ونحتاج إلى بعض الأجزاء للحزم الأخرى (مثل تجميعات البيانات الوصفية لـ fable-compiler-js) فمن المحتمل أن يكون الأمر أبسط إذا قمنا بإنشاء المكونات هنا وسحبها من مستودعات أخرى .

لذا فإن الفكرة هي أن نضع هنا:

  • عامل الويب REPL الذي يمكنه تلقي الرسائل لتجميعها وتقديم تلميحات الأدوات وما إلى ذلك
  • البيانات الوصفية (System.dll وما شابه) + Fable.Repl.Lib التجميعات (وملفات JS المترجمة مسبقًا) التي يجب الرجوع إليها في التجميع
  • مكون React لمحرر Monaco لرمز F #.

يجب أن يقوم مترجم الخرافة / الاستبدال بسحب هذه المكونات وتوفير بقية واجهة المستخدم والسلوك. سيكون أيضًا أساسًا للمواقع الأخرى التي تضمِّن REPL ، على سبيل المثال لإنشاء دروس Markdown F # مع تقييم النتيجة.

لا ينبغي أن يكون إنشاء البنية التحتية أمرًا معقدًا للغاية ، لكن هذا بعض العمل ، سأحاول البدء الأسبوع المقبل ، لأنني ربما (الوحيد؟) الشخص الذي يعرف كيف يناسب كل القطع معًا ؛)

MustafaHosny اللهم امين يارب

enhancement

التعليق الأكثر فائدة

alfonsogarciacaro بالطبع لا أفعل ، هذا لا يعني أنني لا أتبع ؛)
كنت أمزح فقط ، من يريد أن يعرف بالفعل (ربما) يعرف من متابعتك على GitHub.

الخطوة التالية -> إلى القمر! (أعني ، مشاريع F # في REPL ، تلميح تلميح لكوع الكوع ؛)

ال 12 كومينتر

أقوم بإضافة @ Krzysztof-Cieslak في المناقشة.

مكون React لمحرر Monaco لرمز F #.

سأكون مهتمًا بهذا أيضًا ، لقد سرقت الكثير من التعليمات البرمجية لجعل موناكو تعمل في عارض AST 😅. على الرغم من أنني أتساءل عما إذا كان من المنطقي أن يكون لديك شيء من نوع Fable.Import.Monaco .

الرجاء الاتصال بي عندما يكون جاهزًا. أرغب في دمج Fable مع Klipse للسماح

اكتمل هذا :) الآن التجميعات الضرورية لتجميع مشاريع F # مع Fable متوفرة في الحزمة fable-metadata npm ، بينما يتم شحن FCS + Fable المترجمة إلى JS في fable-standalone ، مع عامل الويب يمكن تضمينها في موقع ويب.

تعتمد Fable REPL بالفعل على هذه الحزم. التعليمات هي إلى حد ما مثل هذا:

  • انسخ محتويات fable-metadata/lib و fable-standalone/dist إلى أي مكان تخدم فيه ملفاتك الثابتة: مثال
  • أضف مرجعًا إلى هذه الملفات في مشروعك (مساحات الأسماء Fable.Standalone و Fable.WebWorker على التوالي):
fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
  • ابدأ عامل الويب ببعض المعلومات (الأهم من ذلك أين يمكن العثور على تجميعات البيانات الوصفية).

  • تحقق من ملف src / App / Main.fs وشاهد رسائل العامل لمعرفة كيفية التفاعل مع العامل.

alfonsogarciacaro كان هذا إعادة صياغة رائعة وتبسيط الريبو! لا أستطيع الانتظار حتى نشر المدونة / تغريدة :)

عمل رائع منكم جميعًا

ncave لكن ليس لديك حساب على تويتر ، أو أليس كذلك؟ ؛) TBH ، أنا قلق إلى حد ما بشأن جعل هذا الأمر عامًا جدًا لأنه لا يزال تشغيل الكود الذي تم إنشاؤه ليس بالأمر السهل ، وأخشى أنه إذا حاول الأشخاص تضمين REPL في مواقعهم ، فسيكون هناك العديد من المشكلات لحلها: /

alfonsogarciacaro بالطبع لا أفعل ، هذا لا يعني أنني لا أتبع ؛)
كنت أمزح فقط ، من يريد أن يعرف بالفعل (ربما) يعرف من متابعتك على GitHub.

الخطوة التالية -> إلى القمر! (أعني ، مشاريع F # في REPL ، تلميح تلميح لكوع الكوع ؛)

أرغب في دعم F # على Klipse (المكون الإضافي js لتقييم الكود) بنفس الطريقة التي يدعم بها Klipse LISP و Clojure و ruby .

لهذا الغرض ، أحتاج إلى تعليمات بسيطة لاتباعها:

  1. ملف js واحد مجمع
  2. دالة EVAL.

viebel التعليمات لتحقيق ذلك موجودة في التعليق أعلاه . يمكنني مساعدتك في تقليلها إلى استدعاء دالة Eval (وربما وظيفة init في البداية) ولكن يرجى ملاحظة أنه بدون عامل الويب لن تكون تجربة المستخدم لطيفة لأن Klipse UI سوف تتجمد أثناء تحميل المترجم أو تجميعه.

alfonsogarciacaro أنا لست قلقًا كثيرًا بشأن تجميد Klipse UI أثناء التجميع ، على افتراض أن الأمر يستغرق أقل من 300 مللي ثانية لمقتطفات التعليمات البرمجية القصيرة.

الرجاء مساعدتي في تقليل التعليمات إلى استدعاء دالة init + Eval

سيتم الإغلاق لأننا لا نخصص الموارد حاليًا في REPL.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

jwosty picture jwosty  ·  3تعليقات

ncave picture ncave  ·  3تعليقات

MangelMaxime picture MangelMaxime  ·  3تعليقات

et1975 picture et1975  ·  3تعليقات

rommsen picture rommsen  ·  3تعليقات