'Programming/lisp'에 해당되는 글 35건

  1. 2012.12.31 lisp 반복문
  2. 2012.12.29 clisp
  3. 2012.12.29 lisp 기본함수
  4. 2012.12.29 xlisp-plus 3.05
  5. 2012.12.14 lisp vector
  6. 2012.12.11 lisp atom
  7. 2012.12.06 lisp tutorial
  8. 2012.12.05 lisp - #' 와 '
  9. 2012.12.03 클로져
  10. 2012.11.19 lisp는 리스트지 prefix 표기법이 아니다
Programming/lisp2012. 12. 31. 21:35
c의 for나 while과 비슷한 반복문 키워드로
loop, dotimes, dolist 등이 있다.

(let ((<var1> <init1>) (<var2> <init2>) …)
<body> )

– Declares local variables.  It is best to declare variables before using them.

(dotimes (<counter> <limit> <result>)
<body>)
(let ((sum 0))
    (dotimes (i 10 sum) (setq sum (+ sum i))) ) => 45
 
[링크 : http://logic.stanford.edu/classes/cs157/2004/programming/lisp.pdf

xlisp 설명서 발췌
Looping Constructs

basic looping form
(loop <expr>...)

fsubr

<expr> the body of the loop
returns never returns (must use non-local exit, such as return)



general looping form
(do (<binding>...) (<texpr> <rexpr>...) <expr>...)
(do* (<binding>...) (<texpr> <rexpr>...) <expr>...)

fsubr. do binds simultaneously, do* binds sequentially

<binding> the variable bindings each of which is either:

1) a symbol (which is initialized to NIL)
2) a list of the form: (<sym> <init> [<step>])

where:
<sym> is the symbol to bind
<init> the initial value of the symbol
<step> a step expression

<texpr> the termination test expression
<rexpr> result expressions (the default is NIL)
<expr> the body of the loop (treated like an implicit prog)
returns the value of the last result expression



loop through a list
(dolist (<sym> <expr> [<rexpr>]) <expr>...)

fsubr

<sym> the symbol to bind to each list element
<expr> the list expression
<rexpr> the result expression (the default is NIL)
<expr> the body of the loop (treated like an implicit prog)
returns the result expression



loop from zero to n-1
(dotimes (<sym> <expr> [<rexpr>]) <expr>...)

fsubr

<sym> the symbol to bind to each value from 0 to n-1
<expr> the number of times to loop (a fixnum)
<rexpr> the result expression (the default is NIL)
<expr> the body of the loop (treated like an implicit prog)
returns the result expression 

'Programming > lisp' 카테고리의 다른 글

lisp 전역변수 / 지역변수  (0) 2013.01.09
lisp car / cdr  (0) 2013.01.03
clisp  (0) 2012.12.29
lisp 기본함수  (0) 2012.12.29
xlisp-plus 3.05  (0) 2012.12.29
Posted by 구차니
Programming/lisp2012. 12. 29. 13:19
윈도우용은 cygwin으로 써야하는군하 -_-

[링크 : http://www.clisp.org/]

'Programming > lisp' 카테고리의 다른 글

lisp car / cdr  (0) 2013.01.03
lisp 반복문  (0) 2012.12.31
lisp 기본함수  (0) 2012.12.29
xlisp-plus 3.05  (0) 2012.12.29
lisp vector  (0) 2012.12.14
Posted by 구차니
Programming/lisp2012. 12. 29. 13:02
xlisp 도움말 발췌

Symbol Functions


set the global value of a symbol
(set <sym> <expr>)
You can also use (setf (symbol-value <sym>) <expr>)
<sym> the symbol being set
<expr> the new value
returns the new value


set the value of a symbol
(setq [<sym> <expr>]...)
fsubr. You can also use (setf <sym> <expr>)
<sym> the symbol being set (quoted)
<expr> the new value
returns the last new value or NIL if no arguments
 

define a function
(defun <sym> <fargs> <expr>...)
define a macro
(defmacro <sym> <fargs> <expr>...)
fsubr
<sym> symbol being defined (quoted)
<fargs> formal argument list (lambda list) (quoted)
<expr> expressions constituting the body of the function (quoted)
returns the function symbol


---
> (defun prt () '(be))                    
prt                                       
> prt                                     
error: unbound variable - prt             
if continued: try evaluating symbol again 
1> (prt)                                  
(be)                                      
 
1> (defun add (a b) (+ a b))             
add                                      
1> ( add 2 4)                            
6                                        
1> add                                   
error: unbound variable - add            
if continued: try evaluating symbol again
2> (add)                                 
error: too few arguments                 

'Programming > lisp' 카테고리의 다른 글

lisp 반복문  (0) 2012.12.31
clisp  (0) 2012.12.29
xlisp-plus 3.05  (0) 2012.12.29
lisp vector  (0) 2012.12.14
lisp atom  (0) 2012.12.11
Posted by 구차니
Programming/lisp2012. 12. 29. 00:07
1999년 이후로 업뎃안하다가 macosx와 64bit 지원으로 인해
3.04에서 3.05로 업그레이드 된 듯.

xlisp의 문서(함수목록)


[링크 : http://www.almy.us/xlisp.html]
[링크 : http://en.wikipedia.org/wiki/XLISP]

'Programming > lisp' 카테고리의 다른 글

clisp  (0) 2012.12.29
lisp 기본함수  (0) 2012.12.29
lisp vector  (0) 2012.12.14
lisp atom  (0) 2012.12.11
lisp tutorial  (0) 2012.12.06
Posted by 구차니
Programming/lisp2012. 12. 14. 07:37
lisp는 기본적으로 list로 하는데
list의 경우 linked list로 내부적으로 구현하기 때문에 아무래도 순차적으로 이동할때 오버헤드가 걸리는데
array에서 파생된 vector는 constant time에 접근이 가능하다고 한다.

 One-dimensional arrays are called vectors in Common Lisp and constitute the type vector (which is therefore a subtype of array). Vectors and lists are collectively considered to be sequences. They differ in that any component of a one-dimensional array can be accessed in constant time, whereas the average component access time for a list is linear in the length of the list; on the other hand, adding a new element to the front of a list takes constant time, whereas the same operation on an array takes time linear in the length of the array. 

[링크 : http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node30.html]

'Programming > lisp' 카테고리의 다른 글

lisp 기본함수  (0) 2012.12.29
xlisp-plus 3.05  (0) 2012.12.29
lisp atom  (0) 2012.12.11
lisp tutorial  (0) 2012.12.06
lisp - #' 와 '  (0) 2012.12.05
Posted by 구차니
Programming/lisp2012. 12. 11. 07:46
의미를 지니는 최소단위
파서로 치면 token

[링크 : http://nostoc.stanford.edu/jeff/llisp/4.html]

'Programming > lisp' 카테고리의 다른 글

xlisp-plus 3.05  (0) 2012.12.29
lisp vector  (0) 2012.12.14
lisp tutorial  (0) 2012.12.06
lisp - #' 와 '  (0) 2012.12.05
클로져  (0) 2012.12.03
Posted by 구차니
Programming/lisp2012. 12. 6. 18:58
lisp 강의자료나 예제를 찾다가 발견
이 내용을 lisp 처음공부할때 보았더라면 이해를 했을텐데....

[링크 : http://www2.cs.sfu.ca/CourseCentral/310/pwfong/Lisp/]
[링크 : http://www.cs.sfu.ca/CourseCentral/310/pwfong/Lisp/1/tutorial1.html]

'Programming > lisp' 카테고리의 다른 글

lisp vector  (0) 2012.12.14
lisp atom  (0) 2012.12.11
lisp - #' 와 '  (0) 2012.12.05
클로져  (0) 2012.12.03
lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
Posted by 구차니
Programming/lisp2012. 12. 5. 23:18
'는 quote(인용)인데
함수적 언어인 lisp에서 함수를 쓰지 않고 list나 atom을 만드는데 사용한다.
> (quote a)
A
> 'a
A
> '(a)
(A) 
> (quote (a))
(A) 

>'(+ 1 2)
(+ 1 2)

위의 예제와 같이 (quote val)과 'val은 동일하며 atom을 나타낼때 사용된다.
atom으로 쓰려면 'val
list로 쓰려면 '(val)
로 사용하면 된다. 물론 함수역시 list의 atom으로서 인식이 되어질수 있다.



#'는 lisp 문서를 보다가 찾게 된 녀석인데
#' 는 (function val)과 같은 의미이고
함수 포인터라고 하기도 모호하고 아무튼.. 아직은 이해가 잘 안되는 녀석..
APPLY is also a Lisp primitive function.
APPLY takes a function and a list of objects as input. It invokes the specified function with those objects as its inputs.  The first argument to APPLY should be quoted with #’ rather than an ordinary quote; #’ is the proper way to quote functions supplied as inputs to other functions.  This will be explained in more detail in Chapter 7.
(apply #'+ '(2 3)) ⇒ 5
(apply #’equal '(12 17)) ⇒ nil 

The #’ (or ‘‘sharp quote’’) notation is the correct way to quote a function in Common Lisp.  If you want to see what the function CONS looks like in your implementation, try the following example in your Lisp:
> (setf fn #’cons)
#<Compiled-function CONS {6041410}>
> fn
#<Compiled-function CONS {6041410}>
> (type-of fn)
COMPILED-FUNCTION
> (funcall fn ’c ’d)
(C . D) 

> #'+
#<SYSTEM-FUNCTION +> 

> (function +)
#<SYSTEM-FUNCTION +> 

---2012.12.11

#는 벡터라고 한다.
[링크 : http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node30.html]

'Programming > lisp' 카테고리의 다른 글

lisp atom  (0) 2012.12.11
lisp tutorial  (0) 2012.12.06
클로져  (0) 2012.12.03
lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 관련 책  (0) 2012.01.25
Posted by 구차니
Programming/lisp2012. 12. 3. 07:54
익명함수 , 람다 폼 이런걸로 불리는데
lisp에서 유래된건진 모르겠지만, 요즘 유행하는 신형 언어들은 거의 대부분 채택하고 있다.

[링크 : http://www.langdev.org/posts/38]
[링크 : http://www.ibm.com/developerworks/kr/library/j-jtp04247.html]

[링크 : http://bluesky.springnote.com/pages/2017150 ]
[링크 : http://php.net/manual/kr/functions.anonymous.php]

[링크 : http://en.wikipedia.org/wiki/Anonymous_function#C_lambda_expressions
[링크 : http://en.wikipedia.org/wiki/Closure_%28computer_science%29

[링크 : http://ko.wikipedia.org/wiki/함수형_프로그래밍]
[링크 : http://ko.wikipedia.org/wiki/람다_대수]

'Programming > lisp' 카테고리의 다른 글

lisp tutorial  (0) 2012.12.06
lisp - #' 와 '  (0) 2012.12.05
lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 관련 책  (0) 2012.01.25
lisp 문법  (0) 2012.01.24
Posted by 구차니
Programming/lisp2012. 11. 19. 14:33
지하철에서 오가다가 lisp 문서를 보다보니
(+ 1 2 3)
6

이런 내용이 있어서 곰곰히 생각해보니
이 써글(!) lisp를 못 읽었던 이유가
전위 표기법으로 착각을 하고 있었던것 -_-


list를 기반으로 하기에 모든건 list이고 
+는 단지 처음에 오는 식별자 혹은 함수 이름으로서 '+' 라는 점
그렇기에 +와 - 를 합쳐서 쓰려면
괄호가 늘어 난다는 점 -_-

또한 값으로만 이루어진 리스트는
'(a b c) 식으로 함수 없이 값만으로 이루어진 것이라는 접두가 필요하다는 점
머.. 이게 이번에 깨달은 걸려나? 

'Programming > lisp' 카테고리의 다른 글

lisp - #' 와 '  (0) 2012.12.05
클로져  (0) 2012.12.03
lisp 관련 책  (0) 2012.01.25
lisp 문법  (0) 2012.01.24
slime / lispbox  (0) 2012.01.24
Posted by 구차니