سؤال
كما أن الكثير من الناس أشار في هذا السؤال, Lisp هي تستخدم في الغالب تجربة التعلم.ومع ذلك, سيكون أمرا رائعا إذا استطعت بطريقة ما أستخدم اللثغة خوارزميات الجمع بينهما مع C# برامج.في كلية بلدي profs لا يمكن أن تقول لي كيفية استخدام بلدي اللثغة الروتين في برنامج (لا, لا كتابة واجهة المستخدم الرسومية في Lisp, شكرا لك).لذلك كيف يمكنني ذلك ؟
المحلول
جرب هذه .صافي تطبيقات اللثغة:
IronScheme تهدف إلى R6RS مطابقة مخطط التنفيذ على أساس في Microsoft DLR.
L حادة .صافي هي قوية مثل اللثغة البرمجة لغة .صافي.فإنه يستخدم اللثغة لهجة مشابهة قوس ولكن تتكامل مع .صافي الإطار الذي يوفر مجموعة غنية من المكتبات.
نصائح أخرى
Clojure هو Lisp-1 جمعت على ذبابة على جافا بايت كود ، مما يؤدي إلى جيد جدا وقت الأداء.يمكنك استخدام Clojure ، عبر ترجمة ذلك إلى .صافي الجمعية باستخدام IKVM's ikvmc.بالطبع, عندما تستخدم في .صافي ، Clojure بسعادة يولد .صافي IL, مما يؤدي إلى نفس النوع من تجميع رمز الأداء يمكنك أن تتوقع عند استخدامه على JVM.
إذا كان مجرد إجراءات كنت ترغب في استخدام قد حاول LSharp الذي يتيح لديك اللثغة في التعبيرات .صافي:
العكس (باستخدام .صافي من اللثغة) سيكون RDNZL:
على .صافي 1.1 SDK يحتوي على اللثغة مترجم سبيل المثال.راجع SDK\v1.1\المطورين أداة دليل\Samples\clisp
أعرف أن هذا هو حقا مسألة قديمة.ولكن سأحاول الإجابة من تجربتي الخاصة و المنظور.
إلى تلك مثلنا الذين يحبون نقاء الأناقة والبساطة من مخطط/Lisp, آمل أن يكون هذا يعطيك بعض التشجيع والإلهام كيف أنها يمكن أن تكون مفيدة جدا في الإنتاج الحقيقي :)
كنت مؤخرا مفتوح المصدر نظام مثل مترجم من العمل يسمى schemy, مكتوب في C# (~1500 سطر من التعليمات البرمجية).وهنا الدافع وكيف أنها مفيدة -
دون الخوض في الكثير من التفاصيل ، لقد تم بناء المعهد على شبكة الإنترنت الخادم التي تطلب التعامل مع المنطق المطلوب هو أن تكون plug-and-play من قبل مطورين آخرين/البيانات العلماء.كان هناك طلب واضح لفصل القلق هنا - الخادم لا يهتمون كثيرا عن طلب التعامل مع المنطق ، ولكن ذلك يحتاج إلى معرفة الطلبات التي يمكن التعامل معها و أين تجد ، تحميل المنطق معالجات.
لذلك بدلا من وضع معالجات التنفيذ في تطبيق الملقم الملقم فقط يوفر إعادة استخدامها "كتل" التي يمكن بالسلاسل معا على أساس بعض المعايير والمنطق لتشكيل خط أنابيب, أي معالجات محددة عبر التكوين.حاولنا سلمان/XML لوصف هذه الانابيب و سرعان ما أدرك أن كنت أساسا بناء جملة مجردة شجرة محلل.
كان هذا عندما أدركت هذا الطلب خفيفة الوزن ، s-التعبير الصغيرة القائمة على اللغة.وبالتالي أنا نفذت ادراجها schemy مترجم.
أنا وضعت مثال الأمر التعامل مع التطبيق هنا, الذي يلتقط جوهر فلسفة التصميم على ملقم ويب التي ذكرتها أعلاه.يعمل مثل ذلك:
بل يمتد جزءا لا يتجزأ من Schemy مترجم مع بعض وظائف تنفيذها في C#.
فإنه يجد
.ss
النصوص التي تعرف الأوامر تجهيز خط أنابيب باستخدام أولئك تنفيذ المهام.الخادم يرى قائما يؤلف خط أنابيب من السيناريو من قبل أبحث عن الرمز
EXECUTE
التي ينبغي أن تكون من نوعFunc<object, object>
.عند طلب الأمر يأتي ببساطة استدعاء المقابلة قيادة المعالج (واحد يحددها
EXECUTE
) ، و الردود مع النتيجة.
أخيرا, من هنا معقدة سبيل المثال النصي ، الذي يوفر على الانترنت الرجل-صفحة بحث عبر TCP هذا الأمر server:
; This script will be load by the server as command `man`. The command
; is consistent of the following functions chained together:
;
; 1. An online man-page look up - it detects the current operating system and
; decides to use either a linux or freebsd man page web API for the look up.
;
; 2. A string truncator `truncate-string` - it truncates the input string, in
; this case the output of the man-page lookup, to the specified number of
; characters.
;
; The client of the command server connects via raw RCP protocol, and can issue
; commands like:
;
; man ls
;
; and gets response of the truncated corresponding online manpage content.
(define EXECUTE
(let ((os (get-current-os))
(max-length 500))
(chain ; chain functions together
(cond ; pick a manpage lookup based on OS
((equal? os "freebsd") (man-freebsd))
((equal? os "linux") (man-linux))
(else (man-freebsd)))
(truncate-string max-length)))) ; truncate output string to a max length
مع هذا البرنامج النصي تحميلها من قبل قيادة ملقم TCP يمكن للعميل إصدار الأوامر man <unix_command>
إلى الملقم:
$ ncat 127.0.0.1 8080
man ls
LS(1) FreeBSD General Commands Manual LS(1)
NAME
ls -- list directory contents
SYNOPSIS
ls [--libxo] [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,] [-D format]
[file ...]
DESCRIPTION
For each operand that names a file of a type other than directory, ls
displays its name as well as any requested, associated information. For
each operand that names a file of type directory, ls displays the names
of files contained within that directory, as well as any requested,
ربما يجب أن نلقي نظرة على L#.أنا لا أعرف إذا كان هذا هو ما كنت أبحث عنه (لم ألمس اللثغة منذ عام الجامعة) ولكن قد يكون من المفيد أن تحقق.
هناك أيضا DotLisp.