Serguey Zefirov (thesz) wrote,
Serguey Zefirov
thesz

Something worthwhile

Легкое использование полиморфизма для двух вариантов представления выражений. Произвольных - используется для представления выражения из кода программы, - и ограниченных по глубине, это используется в трехадресном коде.
data Expr sube conste =
    BinE BinOp sube sube
  | UnE  UnOp  sube
  | ZeroE conste

data BinOp = ...
data UnOp = ...

-- Общая часть.
data ConstVar = Var String | Const Float

-- Произвольное дерево. Используется где придется.
data TreeE = TreeEExpr (Expr TreeB ConstVar)

-- Только лишь бинарные и унарные операции. Static Single Assignment или трехадресные выражения.
data SSAE = SSAE (Expr ConstVar ConstVar)

-- Та же идея, только еще короче:
data ListOrMaybe a sub = Cons a sub | Nil

data ListNotMaybe a = ListNotMaybe a (ListNotMaybe a)
data MaybeNotList a = MaybeNotList a ()
Tags: Хаскель, компиляторы
Subscribe

  • Удивительный феномен.

    - Я верю, что бог создал меня для лучшей борьбы с феминизмом. Они думают, что я такой приятный гей, а тут я такой "факты говорят об обратном!" На…

  • Абсолютно медитативный канал.

    Primitive Technology Ссылка сразу ведет на изготовление горшков и создание очага. Но там в окрестности много интересного!

  • сделано в СССР

    Оригинал взят у dr_klm в сделано в СССР Прикольная расшифровка американо-русского новояза. ;-) via chadge

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments