سؤال

لقد قرأت الكثير عن تعزيز التعلم مؤخرا وجدت "تعزيز التعلم:مقدمة" أن يكون دليل ممتاز.الكاتب مفيد مساعد التعليمات البرمجية المصدر الكثير من الأمثلة عمل.

قبل أن أبدأ السؤال أود أن أشير إلى أن بلدي المعرفة العملية من يسب هو الحد الأدنى.أنا أعرف المفاهيم الأساسية وكيف يعمل, ولكن لم تستخدم حقا اللثغة بطريقة ذات معنى ، لذا فمن المرجح أنا فقط تفعل شيء لا يصدق n00b العش.:)

أيضا الدولة الطرف على صفحته أنه لن يجيب على الأسئلة حول رمز له ، لذلك لم يكن الاتصال به ، وأحسب تجاوز سعة مكدس سيكون خيار أفضل بكثير.

كنت أحاول تشغيل التعليمات البرمجية على جهاز لينكس باستخدام كل غنو CLISP و SBCL ولكن لم تكن قادرة على تشغيله.وأظل الحصول على قائمة كاملة من الأخطاء باستخدام إما مترجم.ولا سيما أن معظم يظهر رمز إلى استخدام الكثير من المرافق الواردة في الملف المرافق.اللثغة التي تحتوي على خطوط

(defpackage :rss-utilities
  (:use :common-lisp :ccl)
  (:nicknames :ut))

(in-package :ut)

على :ccl يبدو أن أشير إلى بعض نوع من Mac القائم على نسخة من lisp, ولكن أنا لا يمكن أن تؤكد ذلك ، يمكن أن يكون مجرد حزمة أخرى من التعليمات البرمجية.

> * (load "utilities.lisp")
>
> debugger invoked on a
> SB-KERNEL:SIMPLE-PACKAGE-ERROR in
> thread #<THREAD "initial thread"
> RUNNING {100266AC51}>:   The name
> "CCL" does not designate any package.
> 
> Type HELP for debugger help, or
> (SB-EXT:QUIT) to exit from SBCL.
> 
> restarts (invokable by number or by
> possibly-abbreviated name):   0:
> [ABORT] Exit debugger, returning to
> top level.
> 
> (SB-INT:%FIND-PACKAGE-OR-LOSE "CCL")

حاولت إزالة هذا قطعة معينة (تغيير الخط

  (:use :common-lisp)

ولكن هذا مجرد خلق المزيد من الأخطاء.

> ; in: LAMBDA NIL ;     (+
> RSS-UTILITIES::*MENUBAR-BOTTOM* ;     
> (/ (- RSS-UTILITIES::MAX-V
> RSS-UTILITIES::V-SIZE) 2)) ;  ; caught
> WARNING: ;   undefined variable:
> *MENUBAR-BOTTOM*
> 
> ;     (-
> RSS-UTILITIES::*SCREEN-HEIGHT*
> RSS-UTILITIES::*MENUBAR-BOTTOM*) ;  ;
> caught WARNING: ;   undefined
> variable: *SCREEN-HEIGHT*
> 
> ;     (IF RSS-UTILITIES::CONTAINER ;  
> (RSS-UTILITIES::POINT-H ;         
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::CONTAINER)) ;        
> RSS-UTILITIES::*SCREEN-WIDTH*) ;  ;
> caught WARNING: ;   undefined
> variable: *SCREEN-WIDTH*
> 
> ;     (RSS-UTILITIES::POINT-H
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::VIEW)) ;  ; caught
> STYLE-WARNING: ;   undefined function:
> POINT-H
> 
> ;     (RSS-UTILITIES::POINT-V
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::VIEW)) ;  ; caught
> STYLE-WARNING: ;   undefined function:
> POINT-V

هل لدى أحدكم أي فكرة كيف يمكن تشغيل هذا الرمز ؟ أنا مجرد جاهل تماما من جميع الأشياء lisp ؟

تحديث [مارس / آذار 2009]: أنا ركبت Clozure, ولكن لا تزال غير قادرة على الحصول على التعليمات البرمجية لتشغيل.

في CCL موجه الأوامر command

(load "utilities.lisp")

النتائج في الخطأ التالية الإخراج:

;Compiler warnings :
;   In CENTER-VIEW: Undeclared free variable *SCREEN-HEIGHT*
;   In CENTER-VIEW: Undeclared free variable *SCREEN-WIDTH*
;   In CENTER-VIEW: Undeclared free variable *MENUBAR-BOTTOM* (2 references)
> Error: Undefined function RANDOM-STATE called with arguments (64497 9) .
> While executing: CCL::READ-DISPATCH, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry applying RANDOM-STATE to (64497 9).
> Type :? for other options.
1 >

Unfortuately, أنا لا تزال التعلم عن اللثغة ، حتى حين يكون لدي شعور بأن شيئا ما ليس يعرف تماما, أنا لا أفهم حقا كيف تقرأ رسائل الخطأ هذه.

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

المحلول

هذا الرمز هو لماكنتوش Common Lisp (MCL).فإنه سيتم تشغيل فقط هناك.باستخدام Clozure CL (CCL) لن يساعد.سيكون لديك تعليق الرسومات رمز.عشوائية الدولة الأشياء أيضا قليلا خاصة بالنسبة MCL.لديك المنفذ عليه أن المحمولة Common Lisp (جعل-عشوائية-الدولة, وما إلى ذلك).أيضا أسماء الملفات الخاصة لنظام التشغيل Mac.

Clozure CL هو شوكة من ماكنتوش Common Lisp, ولكن قد تكون تغيرت إلى Unix الاتفاقيات (pathnames, ...) و لا تشمل الرسومات الخاصة مدونة MCL.

نصائح أخرى

تخميني هو أن رمز CCL-تعتمد ، وذلك باستخدام CCL بدلا من CLISP أو SBCL.يمكنك تحميل البرنامج من هنا: http://trac.clozure.com/openmcl

باستخدام أحدث نسخة من CCL على لينكس x86, مع هذا الملف حفظ فو.اللثغة:

#+ccl (defun random-state (x y)
        (ccl::initialize-random-state x y))

(load "utilities.lisp")
(use-package 'rss-utilities)


(load "testbed.lisp")

(setup)
(init)

(print (runs 10 10 .1))

تشغيل

~/svn/ccl/lx86cl -l foo.lisp

طباعة مجموعة من رسائل التحذير و المطلوب الإجابة من:

(-0.77201915 0.59691894 0.78171235 0.41514033 0.6744591 0.26383805 0.8981678 1.1274683 0.50265205 0.4081622)

لمعرفة المطلوبة #'عشوائية الدولة defun ، خمنت أن "#.(عشوائي-الدولة 64497 9)" كان تسلسل عشوائي الدولة كائن من MCL.لنرى كيف CCL مقابض أن راجعت ما جعل-عشوائية-الدولة النواتج في CCL:

$ ~/svn/ccl/lx86cl 
Welcome to Clozure Common Lisp Version 1.3-r11936  (LinuxX8632)!
? (make-random-state)
#.(CCL::INITIALIZE-RANDOM-STATE 64497 9)

إذا كنت قد استخدمت أبدا اللثغة بطريقة ذات معنى ، هناك Matlab code من أجل "تعزيز التعلم:مقدمة".

بالإضافة إلى راينر Joswig الجواب:بمجرد تثبيت Clozure عليك تحديث المراجع إلى وظيفة RANDOM-STATE في utilities.lisp إلى random-mrg31k3p-state.

وبشكل أكثر تحديدا محل: #.(RANDOM-STATE 64497 9) مع #.(ccl::random-mrg31k3p-state)

random-mrg31k3p-state ويبدو أن استبدال random-state في وقت ما بعد مدونة كتب ترى l1-أرقام.lisp ؟ rev=13327

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