[Lisp] Ch 3 - Eval Notation

2021. 4. 13. 15:46·Major/Lisp
728x90

1. EVAL 함수

- 리슾에서 심장의 역할을 하는 함수다.

- evaluate의 약자로 문자열이 코드라고 가정하고 평가해서 실행한다는 의미

 

ex) 리슾에서 (+ 3 5) 를 입력하면 8이 나오는 것처럼 (+ 3 5)는 5로 평가된다는 의미

 

1) 규칙

- Self-evaluating : 숫자 , 그리고 심볼, t와 nil은 자기자신을 반환한다.

ex) 23을 입력하면 23이 출력

 

- 리스트 eval 규칙 

ⓐ 첫번째 요소는 함수이름이어야 한다.

ⓑ 남은 요소들은 함수의 매개변수여야 한다.

ex) (equal (+ 7 5) (* 2 8)) 

 

2. Defun 함수

- 매크로 함수이다.

- 함수이름, 매개변수, 함수 바디로 이루어져 있다.

 

1) 규칙

- Self-evaluating : 숫자 , 그리고 심볼, t와 nil은 자기자신을 반환한다.

ex) 23을 입력하면 23이 출력

 

- 리스트 eval 규칙 

ⓐ 첫번째 요소는 함수이름이어야 한다.

ⓑ 남은 요소들은 함수의 매개변수여야 한다.

ex) (equal (+ 7 5) (* 2 8)) 

 

- 특별한 함수

ⓐ 매개변수가 없는 함수

ⓑ quote 함수 : '를 쓰는 대신 quote를 쓸 수도 있다.

ex) '(hello world) = (quote (hello world))

 

- 빌트인 함수

ex) symbol-name : 심볼로 쓰겠다 (symbol-name 'a) = "a"

    symbol-function : 함수로 정의되어 있는지 확인

 

- lambda 정의 : 함수 이름없이 사용할 수 있는 함수

ex) (lambda (x) (+ 3 x) 10) = 13 

 

- #` : 다른 함수의 입력값으로 제공되는 quote함수의 적절한 방법(?)

영문 : the proper way to quote functions supplied as inputs to other functions.

 

 

 

 

3. 변수(Variables)

- 데이터가 저장되는 공간이다.

- quoting(') : evaluate하는 것을 막는다.

*  (+ 1 2)를 입력하면 3으로 evaluate 되지만 앞에 '를 붙여서 '(+ 1 2)를 하면 문자열 그대로 출력된다.

 

- 리스트 만드는 방법

ⓐ 전체 괄호 앞에 `를 붙인다. ex) '(foo bar baz)

ⓑ list라고 정의하고 각각의 요소에 '를 붙인다. ex) (list 'foo 'bar 'baz)

 

- 변수의 범위 : 자체적인 함수 내에서만 사용가능

 

 

 

 

728x90
저작자표시 비영리 (새창열림)

'Major > Lisp' 카테고리의 다른 글

[Lisp] Ch 11 - 반복문과 블록구조 (Iteration and Block Structure)  (0) 2021.04.15
[Lisp] Ch 5 - Variables and Side Effects  (0) 2021.04.13
[Lisp] Ch 4 - 조건문 (Conditionals)  (0) 2021.04.10
[Lisp] Ch 2 - 리스트(Lists)  (0) 2021.04.10
[LISP] Ch 1 - 함수와 데이터(Functions and Data)  (0) 2021.03.19
'Major/Lisp' 카테고리의 다른 글
  • [Lisp] Ch 11 - 반복문과 블록구조 (Iteration and Block Structure)
  • [Lisp] Ch 5 - Variables and Side Effects
  • [Lisp] Ch 4 - 조건문 (Conditionals)
  • [Lisp] Ch 2 - 리스트(Lists)
BeNI
BeNI
코딩하는 블로그
  • BeNI
    코딩못하는컴공
    BeNI
  • 전체
    오늘
    어제
    • Menu (254) N
      • My profile (1)
      • 회고 | 후기 (8)
      • Frontend (66) N
        • Article (11)
        • Study (36) N
        • 프로그래머스 FE 데브코스 (19)
      • Backend (0)
      • Algorithm (58)
        • Solution (46)
        • Study (12)
      • Major (111)
        • C&C++ (23)
        • Java (20)
        • Data Structure (14)
        • Computer Network (12)
        • Database (15)
        • Linux (6)
        • Architecture (3)
        • Lisp (15)
        • OS (1)
        • Security (2)
      • etc (2)
  • 링크

    • 깃허브
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    프로그래머스
    Algorithm
    react
    백준
    리팩토링
    파일처리
    C++
    자료구조
    lisp
    데브코스
  • hELLO· Designed By정상우.v4.10.2
BeNI
[Lisp] Ch 3 - Eval Notation
상단으로

티스토리툴바