Embeddable Common Lisp 소개 노트

소개



Qt와 함께 Android 앱도 만들 수 있다면 소문의 ECL (Embeddable Common Lisp)이 신경이 쓰였으므로, 내 PC에 도입해 보았습니다.
  • Lisp (ECL) and QML (Qt5) on Android?
  • Common Lisp and QML for Mobile

  • GMP 설치



    RaspberryPi에서 ECL을 사용하려면 GMP 설치가 필요했습니다.
    RaspberryPi가 아니라면 이 장은 날려도 괜찮다고 생각합니다.
    그래서 GMP의 설치 순서를 기재해 둡니다.

    GMP에 필요한 소프트웨어 설치
    sudo apt install m4
    

    공식 사이트에서 소스 코드를 다운로드하여 압축을 풀어서 만든 디렉토리로 이동.
    우선, 본 기사 투고시의 최신판을 다운로드했습니다.
    wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
    tar xjvf gmp-6.1.2.tar.bz2
    cd gmp-6.1.2
    

    Makefile 만들기
    ./configure
    

    컴파일(시간이 걸렸습니다. 15분 정도.)
    make
    

    설치
    sudo make install
    

    Embeddable Common Lisp 소개



    다운로드



    본 기사 투고 시점에서의 최신판은 2016-12-19로 갱신된 Ver.16.1.3이었습니다.
    다음 명령으로 다운로드하여 압축을 풀고 디렉토리에 들어갑니다.
    wget https://common-lisp.net/project/ecl/static/files/release/ecl-16.1.3.tgz
    tar xzf ecl-16.1.3.tgz
    cd ecl-16.1.3/
    

    Makefile 만들기



    다음 명령으로 Makefile 만들기
    ./configure
    

    컴파일



    컴파일은 상당히 시간이 걸렸습니다. (5~10분 정도)
    RaspberryPi에서의 컴파일은 30분 정도 걸렸습니다・・・.
    make
    

    설치



    ECL을 PC에 설치
    sudo make install
    

    동작 확인



    이하의 커멘드로 REPL(Read-eval-print loop)를 기동.
    ecl
    

    이하의 「Hello, world!」를 표준 출력하는 프로그램을 실행.
    (defun hello () (write-line "Hello, world!"))
    (hello)
    

    이하, 실행중인 모습



    RaspberryPi에서 실행하는 모습



    Quicklisp 소개



    Quicklisp를 넣으면 여러가지 편리해지므로 ECL에서 Quicklisp 도입 절차 추기.
    또한 EQL5와 ECL은 연동하고 있으므로 ECL에서 Quicklisp를 넣으면 EQL5에서도 사용할 수 있습니다.

    먼저 다음 명령으로 quicklisp.lisp를 다운로드합니다.
    curl -O http://beta.quicklisp.org/quicklisp.lisp
    

    그런 다음 다운로드한 quicklisp.lisp를 SBCL에서 실행합니다.
    ecl --load quicklisp.lisp
    

    여러가지 처리가 끝나면 입력할 수 있게 되므로, 이하의 커멘드를 입력해 Quicklisp를 인스톨.
    (quicklisp-quickstart:install)
    

    설치가 끝나면 다음 명령을 입력하고 .eclrc에 quicklisp 경로를 통과합니다.
    이렇게 하면 sbcl 시작 시 자동으로 로드됩니다.
    (ql:add-to-init-file)
    

    마지막으로



    이번에는 설치와 동작 확인을 실시했습니다.
    다음은 Qt와 함께 무언가 할 수 있으면 ~라고 생각합니다.

    좋은 웹페이지 즐겨찾기