본문 바로가기

프로그래밍 언어 노트/Clojure

[Clojure] Clojure 와 Haskell 의 DSL 비교

 

https://www.quora.com/Which-language-is-better-for-creating-DSLs-Clojure-or-Haskell

 

Which language is better for creating DSLs, Clojure or Haskell?

Answer (1 of 4): While I don’t have too much experience with Clojure, I believe that my experience with Scheme could shed some light on the question. Compared to other languages that I have worked with, Scheme has been exceptional in that, instead of “writ

www.quora.com

책을 보다가 Clojure는 DSL 을 만들기 좋다. 라는 내용이 있어서 찾아보았다.

하스켈, 스칼라 심지어 코틀린까지 DSL 을 스스로 만들어서 사용할수있다고한다.

그중에 유명한 하스켈이랑 clojure랑의 DSL 을 만들때의 차이에 관한 설명이 있는 글을 발견하여 포스팅.

간단하게 정리하면

clojure -> S-expression 꼴의 DSL 을 만드는것이 아주 쉽다. clojure와 동일한 표현방식 이기때문에 파서를 만들 필요가 없고 언어와 통합되어있다. (대표적인 케이스가 Hiccup) 대신 해당 꼴이 아닌 DSL 을 제작하는것을 결국 수동

-> Macro / S-Expression 을 이용한 Inner DSL

Haskell -> 강력한 ADT 시스템과 정적타입등을 가지고있어 어떤 형태의 DSL 을 제작할수있다. 파서를 제작하지만 clojure에 비하여 편하게 우아하게 제작이 가능하다. 정적타입이기때문에 오류도 컴파일 타임에 잡아준다.

-> ADT + 모나드 + 인터프리터 패턴을 이용한 AST 구축

 

정도의 내용인듯 싶다.

728x90