아래의 짧은 예는 sed
와 같은 정규식 접근 방식과 비교하여 Comby가 일치 및 재작성을 어떻게 단순화하는지 보여줍니다.
brew install comby
bash <(curl -sL get-comby.netlify.app)
기타 Linux 배포판 : PCRE 라이브러리는 Ubuntu 바이너리에 동적으로 연결됩니다. Arch Linux와 같은 다른 배포판의 경우 수정이 필요합니다: sudo ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3
. Fedora에서는 sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
사용하세요. 또는 소스에서 빌드하는 것을 고려해보세요.
bash <(curl -sL get.comby.dev)
실행하십시오.docker pull comby/comby
stdin
에서 docker로 실행하기:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
가끔은 그렇습니다. 그러나 작은 변경과 리팩토링은 중첩된 표현식, 주석 또는 문자열로 인해 복잡해지는 경우가 많습니다. 다음 C와 유사한 코드 조각을 고려하세요. 두 개의 if
조건을 값 1
로 다시 작성하는 것이 문제라고 가정해 보겠습니다. 두 개의 if 조건식의 내용과 일치하고 그 두 개만 일치하는 정규식을 작성할 수 있습니까? Twitter에서 @rvtond와 함께 패턴을 공유해 보세요.
if ( fgets ( line , 128 , file_pointer ) == Null ) // 1) if (...) returns 0
return 0 ;
...
if ( scanf ( "%d) %d" , & x , & y ) == 2 ) // 2) if (scanf("%d) %d", &x, &y) == 2) returns 0
return 0 ;
이를 Comby와 일치시키려면 if (:[condition])
작성하고 이 언어가 C와 유사하다는 플래그 하나를 지정하면 됩니다. 교체는 if (1)
입니다. 실제 사례를 참조하세요.
오팜을 설치하세요. TL;DR do sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
OCaml이 설치되어 있지 않은 경우 다음을 실행하십시오(OCaml 컴파일러를 부트스트랩함).
opam init
opam switch create 4.11.0 4.11.0
eval $(opam env)
실행
OS 종속성을 설치합니다.
Linux: sudo apt-get install autoconf libpcre3-dev pkg-config zlib1g-dev m4 libgmp-dev libev4 libsqlite3-dev
맥: brew install pkg-config gmp pcre libev
그런 다음 라이브러리 종속성을 설치합니다.
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
PATH
에 comby
설치합니다. make install