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?

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

Архив записей в блогах:
25-го сентября 1925-го года состоялось последнее публичное выступление Сергея Александровича Есенина, которое прошло в Москве. "В Доме печати был вечер современной поэзии. Меня просили пригласить на вечер Есенина. Я пригласил и потом жалел, что сделал это: я убедился, что читать ему ...
Сегодня, 15 февраля 1965 года, тысячи канадцев собрались на Парламентском холме, когда Красный флаг Канады был опущен, а в полдень поднят новый Национальный флаг Канады.  ...
Итак, дорогие сестры во игле! Большое вам спасибо за то что поддержали мою идею с такого рода забегом. Правила Стометровки и их объяснение-обсуждение. Иии, наше кодовое Олимпия. Жду ваши стартовые фото с этим словом, а также немного инфо о себе в комментарии к этой записи. Напри ...
Сдаю 1-х комнатную квартиру,ул.Федоскинская.м. ВДНХ, 10-15 минут на транспорте. 1/14-этажного дома,высокий этаж,решеток нет,окна деревянные. Во всей квартире космитический ремонт сделан,кроме с\у,который совмещен ,в плитке2\3. Кухня 10, комната ...
В общем-то, все началось еще с периода моей беременности, когда ребенок от звуков пылесоса начинал выплясывать джигу в животе. А теперь накрыло совсем - после ...