سؤال

اعتمادًا على حالتي المزاجية، يبدو أنني أتأرجح ذهابًا وإيابًا بين الرغبة في الحصول على Lisp-1 وLisp-2.لسوء الحظ، بعيدًا عن الاختلافات الواضحة في مساحة الاسم، فإن هذا يترك جميع أنواع مشاكل أسماء الوظائف المسلية/إلخ التي تواجهها.مثال على ذلك، في محاولة لكتابة بعض التعليمات البرمجية الليلة حاولت القيام بها (map #'function listvar) والتي، بالطبع، لا تعمل في CL، على الإطلاق.استغرق الأمر مني بعض الوقت لأتذكر أنني أردت سيارة الخريطة، وليس الخريطة.بالطبع لا يساعد ذلك عندما يُظهر Slime/emacs أن الخريطة مُعرّفة على أنها شيء ما، على الرغم من أنه من الواضح أنها ليست نفس الوظيفة على الإطلاق.

لذا، مؤشرات حول كيفية تقليل هذا النقص في اختيار أحدهما أو الآخر والالتزام به؟

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

المحلول

خريطة أكثر عمومية من Mapcar، على سبيل المثال يمكنك القيام بما يلي بدلاً من استخدام Mapcar:

(map 'list #'function listvar)

كيف أبقي المخطط وCL منفصلين في رأسي؟أعتقد أنه عندما تعرف اللغتين جيدًا بما فيه الكفاية، فإنك تعرف فقط ما الذي يصلح في إحداهما وليس الأخرى.على الرغم من أوجه التشابه النحوية، إلا أنها لغات مختلفة تمامًا من حيث الأسلوب.

نصائح أخرى

حسنًا، أعتقد أنه بمجرد حصولك على الخبرة الكافية في كلتا اللغتين، يصبح هذا الأمر غير مشكلة (فقط مع اللغات الطبيعية المماثلة، مثل الإيطالية والإسبانية).إذا كنت تبرمج عادةً بلغة واحدة وتتحول إلى اللغة الأخرى في بعض الأحيان فقط، فمن المؤسف أنك محكوم عليك بكتابة Common Lisp في Scheme أو العكس؛)

الشيء الوحيد الذي يساعد هو وجود بيئة بصرية متميزة لكلا اللغتين، وذلك باستخدام تمييز بناء الجملة ببعض الألوان الأخرى وما إلى ذلك.إذن على الأقل ستعرف دائمًا ما إذا كنت في وضع Common Lisp أو Scheme.

أنا أدرك بالتأكيد أن هناك اختلافات نحوية، على الرغم من أنني بالتأكيد لست أتقنها بدرجة كافية حتى الآن لاستخدامها تلقائيًا، مما يجعل الكود يبدو أكثر تشابهًا حاليًا؛-).

وكان لدي شعور بأن إجابتك ستكون كذلك، ولكن يمكنني دائمًا أن أتمنى اختصارًا <_<.

أسهل طريقة للحفاظ على اللغتين مستقيمتين هي القيام بالتفكير وكتابة التعليمات البرمجية في Common Lisp.يمكن تحويل كود Lisp الشائع إلى كود المخطط بسهولة نسبية؛ومع ذلك، فإن الانتقال من Scheme إلى Common Lisp يمكن أن يسبب بعض الصداع.أتذكر ذات مرة حيث كنت أستخدم Letrec في Scheme لتخزين كل من المتغيرات والوظائف واضطررت إلى تقسيمها إلى وظائف CL منفصلة لمساحات أسماء المتغير والوظيفة على التوالي.

من الناحية العملية على الرغم من أنني لا أعتاد على كتابة كود CL، مما يجعل الأوقات التي أضطر فيها إلى ذلك أكثر إيلامًا.

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