Size: a a a

2020 July 12

к

кана in Haskell
Максим Воротынский
Привет, пишу компилятор на Haskell. Решил сделать AST в виде типа-суммы. И как мне кажется, он получился слишком большим, и будет еще больше. Единственное, что придумал - разбить его на 2 части: внутри тела функции и глобальные вещи. Есть ли вариант лучше?
(до изменений)
сделать AST, это все таки не AST
источник

к

кана in Haskell
data Program
 = Program [Decl]
data Decl
 = VariableDecl Id Lit
 | FunctionDecl Id [Id] Expr
data Expr
 = Lit Lit
 | LocalVar Id Expr
 | SetVar Id Expr
 | GetVar Id
 | Apply Expr [Expr]
 | If Expr Expr Expr
 | While Expr Expr
 | Block [Expr]
data Lit
 = LitInt Int
 | LitBool Bool
newtype Id
 = Id String

ну что-то вроде такого
источник

к

кана in Haskell
размер дерева не проблема, но если уж сильно проблема, то можно сделать другое дерево поменьше и попроще, и компилировать большое дерево сначала в это простое, а потом работать уже только с простым
источник

аа

аа ааа in Haskell
как можно конфигурировать кабал проекты так, чтобы из них получались статически линкуемые библиотеки для основного проекта на другом языке ?
источник

KZ

Kirill Zaborsky in Haskell
собрать никсом?
источник

JS

Jerzy Syrowiecki in Haskell
аа ааа
как можно конфигурировать кабал проекты так, чтобы из них получались статически линкуемые библиотеки для основного проекта на другом языке ?
источник

KZ

Kirill Zaborsky in Haskell
для никса в простейшем случает рецепт довольно простой - https://github.com/NixOS/nixpkgs/issues/43795#issuecomment-652057493
хотя это для экзешника
источник

LO

Leonid 🦇 Onokhov in Haskell
А кабал их инсталлировать научился, или надо в dist-newstyle ползать?
источник

JS

Jerzy Syrowiecki in Haskell
Leonid 🦇 Onokhov
А кабал их инсталлировать научился, или надо в dist-newstyle ползать?
это не ко мне, я не использую. кажется, надо ползать
источник

LO

Leonid 🦇 Onokhov in Haskell
Эх, вот бы побороть лень и сконтрибутить
источник

MK

Maxim Koltsov in Haskell
Cabal recognizes native-static and native-shared here, although we currently only support building native-shared libraries.
источник

JS

Jerzy Syrowiecki in Haskell
Leonid 🦇 Onokhov
А кабал их инсталлировать научился, или надо в dist-newstyle ползать?
а куда инсталлировать? кажется, нет всеязыкового соглашения о раскладке и поиске библиотек
источник

LO

Leonid 🦇 Onokhov in Haskell
Меня устроит libdir
источник

JS

Jerzy Syrowiecki in Haskell
в каждом языке, кроме С, свои соглашения
источник

JS

Jerzy Syrowiecki in Haskell
а в С просто ничего нет
источник

LO

Leonid 🦇 Onokhov in Haskell
Так либа с  C интерфейсом
источник

JS

Jerzy Syrowiecki in Haskell
Leonid 🦇 Onokhov
Так либа с  C интерфейсом
так никто не знает, где сишный линкер должен искать библиотеки
источник

LO

Leonid 🦇 Onokhov in Haskell
В $CABAL_DIR/lib
источник

аа

аа ааа in Haskell
как можно получить Ptr Word8 из ShortByteString максимально дешево?
источник

аа

аа ааа in Haskell
Тут есть анпак и ффи запись листа в массив
источник