我想用haskell将我的DSL翻译成R.我的意思是我想首先解析我的DSL,然后从中生成R代码。我知道在haskell中实现了DSL,但他们都认为编译DSL的目标语言是haskell代码。
请注意,最终产品应生成R代码。因此,它不仅仅是在haskell中实现的DSL,而是生成非haskell代码的DSL;在我的情况下R代码。
DSL的伪代码可以类似于:
d =_ a o b o c
# ==>
d <- function(x) a( b( c( x))) # generated R code
f1 a b =_ a + b
# ==>
f1 <- function(a, b) a + b # generated R code
f2 =_ \x. a (\y. y + y) (x * x) (\z. z / z)
# ==>
f2 <- function(x) a( function(y) y + y, x * x, function(z) z / z) # generated R code
put_ "abc " "def"
# ==>
print(put("abc ", "def ", sep="")) # generated R code