Runtime компиляция в Haskell

топ 100 блогов yantayga22.01.2011 Слышал я, о многоуважаемый all, что в Лиспе можно произвольные данные тут же по ходу выполнения программы "сынтерпретировать" и выполнить, что потенциально дает самомодифицирующиеся программы. А есть ли подобное в Хаскеле? Или возможно ли хотя бы теоретически? Можно ли как то с самой программой слинковать компилятор (учитывая что мы можем использовать Хаскель как длл в связке с программами, написанными на других языках)

UPD.
Просто выполнить код a la ghci можно так (частично взято отсюда):
{-# LANGUAGE NoMonomorphismRestriction #-}
module Test
where

import Language.Haskell.Interpreter
import Control.Monad

run = runInterpreter . test

test :: String -> Interpreter String
test s =
  do
    setImports ["Prelude"]
    res <- eval s
    return res

А вот так можно выполнить некую заранее неизвестную (кроме типа) операцию:
{-# LANGUAGE NoMonomorphismRestriction #-}
module Test
where

import Language.Haskell.Interpreter
import Control.Monad
import System.IO

run = runInterpreter . test

getOperation s = interpret s (as::(Double -> Double))

test :: String -> Interpreter Double
test s =
  do
    setImports ["Prelude"]
    op <- getOperation s
    let res = op 1.0
    return res
   
main :: IO ()
main =
  do
    s <- getLine
    res <- run s
    print res
    return ()

Для примера:
*Test> main
sin
Right 0.8414709848078965
*Test> main
cos
Right 0.5403023058681398

Замечания, критика, поправки и вежливые ругательства приветствуются...
Кстати, как можно сделать в жж syntax colorizing?

Оставить комментарий

Архив записей в блогах:
Мне сегодня так приятно . очень. Неожиданно . (Это редко бывает) . Ко мне на работу сюрпризом приехала подруга и поздравила с Рождеством !
Сижу в ярости. В неимоверной ярости. Как-то тихой сапой правительство приняло закон о новом применении контрольно-кассовой техники. Честно, я даже не слышала о нем, хотя он принят в 2016 году, а я вроде как слежу за новостями. И тут как-то внезапно с месяц назад пошли разговоры об онлайн ...
Я продолжаю объезд Екатеринбурга для того, чтобы увидеть лично качество городского благоустройства, и сегодня моя цель - Уралмаш, или Орджоникидзевский район уральской столицы. Наверное было бы неправильно не рассказать вам немного об истории района, которая выступает важной вехой в ...
" Такой программе нельзя придавать официальный статус. Мне будут навязывать указом президента, как я должен оценивать! Куда мы опять вернемся? Мы к тому же Сталину вернемся, что ли? Сейчас, слава Богу, не 30-е годы XX века, чтобы директивой ВКП(б) ...
Хватит худых!Надоели эти плоские модельки!Давай женщин в теле!Пожалуй не стоит продолжать, вы же сами все это и пишете... ну вот, я потратил немало времени, и нашел фотографии идеальных женщин. Они любят хорошо поесть, рядом с ними вам будет тепло. А ...