Common Lisp: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
→‎Żródła: peflags
literówki, zbędne spacje
Linia 4:
 
 
Środowiska:
Środowisku :
* OS : linux
**Ubuntu
* windows
* IDE : Emacs 22.2.1
** mode :
*** major mode : inferior-lisp
*** minor mode : slime
 
=Przygotowania=
Linia 17:
== praca w konsoli ==
 
Aby''' zainstalować''' Common Lispa ( tu SBCL) w [[Ubuntu]] należy w konsoli wpisać :
 
 
sudo apt-get install sbcl
 
'''Uruchomiamy''' sbcl poprzez wpisanie w konsoli :
 
'''Uruchomiamy''' sbcl poprzez wpisanie w konsoli :
 
sbcl
 
Otrzymujemy :
 
This is SBCL 1.0.29.11.debian, an implementation of ANSI Common Lisp.
Linia 37 ⟶ 34:
*
 
Aby '''zakończyć''' SBCL , możemy nacisnąć Ctrl-z
 
Jeśli w programie zostanie wykryty błąd, to włączy się odpluskwiacz i zmieni znak zachęty :
 
0]
 
aby wyjść z niego wprowadź "0" :
0] 0
*
 
Czasem włączy się '''niskopoziomowy odpluskwiacz''' :
 
 
 
Czasem włączy się '''niskopoziomowy odpluskwiacz''' :
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>
 
Aby wyjść wprowadź "quit" i potem "y" :
 
ldb> quit
Really quit? [y]
 
== praca z IDE ( Emacs) ==
 
Można wykorzystać Emacsa jako edytor oraz IDE. Jest to omówione w podręczniku[[ Emacs]]a
Linia 68 ⟶ 62:
==Wprowadzanie poleceń==
 
Mamy kilka sposobów :
 
* wprowadzać pojedyncze polecenia ( patrz wyżej)
 
* wczytać plik z programem ( tryb wsadowy , ang. batch mode )
 
 
Mamy kilka sposobów :
* wprowadzać pojedyncze polecenia ( patrz wyżej)
* wczytać plik z programem ( tryb wsadowy , ang. batch mode )
* wczytać biblioteki, a następnie wprowadzić polecenia
 
Linia 82 ⟶ 72:
====Wczytywanie pliku====
 
SparawdzamySprawdzamy domyslnydomyślny katalog :
 
*default-pathname-defaults*
 
JeliJeśli plik q.lisp znajduje się w tym katalogu to możemy go wczytać :
 
(load "q.lisp")
 
 
Lepiej użyć makra definiującego ścieżkę :<ref>[http://www.lispworks.com/documentation/HyperSpec/Body/02_dh.htm Sharpsign dokumentacja]</ref>
 
(load #p("/path/to/file"))
 
 
W środowisku windows :<ref>[http://www.daniweb.com/forums/thread72961.html Lisp Load Function w daniweb]</ref>
 
(load "c:\\temp\\testload")
Linia 107 ⟶ 97:
:name "testload"))
 
lub :
 
(load (make-pathname
Linia 117 ⟶ 107:
== Kompilacja ==
 
Jeśli wczytujemy plik z kodem w lispie ( źródłowy) za pomocą funkcji load to po wczytaniu następuje automatyczna kompilacja <ref>[http://www.lispworks.com/documentation/HyperSpec/Body/f_load.htm HyperSpec funkcji load]</ref>
 
Kompilacja pojedynczej '''funkcji''' :
(compile 'nazwa-funkcji)
 
Kompilacja '''pliku''' :
(compile-file "l.lisp" :output-file "l")
 
Otrzymujemy plik l.fasl. Możemy go uruchomić z linii poleceń :
chmod +x l.fasl
./l.fasl
Linia 139 ⟶ 129:
(time < exp>)
 
Profiler nie jest częścią standardową Common Lispa,<ref>[http://www.psg.com/~dlamkins/sl/chapter28.html Successful Lisp: How to Understand and Use Common Lisp by David B. Lamkins, Chapter 28 - Practical Techniques for Programming ]</ref> ale powinien być w każdej wersji. Np. w SBCL jest sb-sprof <ref>[http://www.sbcl.org/manual/Statistical-Profiler.html Podręcznik SBCL, Statistical Profiler ]</ref>.
=Programowanie=
=Stałe=
Stałe globalne definiujemy za pomocą makra '''defconstant''' :
(defconstant iSide 33 "side of rectangular plane / viewport / image in pixels ")
 
==Pętle==
Pętla z użyciem makra '''loop''' : <ref>[http://items.sjbach.com/211/comparing-loop-and-iterate hcomparing-loop-and-iterate by Stephen Bach]</ref>
(loop for y from -1.5 to 1.5 by 0.5 do (format t (concatenate 'string "y= " (write-to-string y) "~%")))
wynik działania :
y= -1.5
y= -1.0
Linia 157 ⟶ 147:
y= 1.5
NIL
Inne parametry :
(loop for y from -1.5 to 1.5 by 0.4 do (format t (concatenate 'string "y= " (write-to-string y) "~%")))
Wynik działania :
y= -1.5
y= -1.1
Linia 172 ⟶ 162:
 
=zobacz również=
zastosowanie peflags ( mały program z Cygwin) do zwiększaniezwiększania wielkości stosu i sterty :<ref>[http://search.gmane.org/?query=peflags&group=gmane.comp.mathematics.maxima.general Dyskusja o peflags na grupie dyskusyjnej Maxima CAS]</ref>
 
peflags --stack-reserve sbcl.exe
Linia 181 ⟶ 171:
 
sbcl.exe: stack reserve size : 16777216 (0x1000000) bytes
=Źródła=
 
 
=Żródła=
<references/>