История изменений
Исправление quasimoto, (текущая версия) :
Так все осиальное на том же уровне - устаревшие банальности и тривиальщина.
А зависимые типы — банальность и тривиальщина 40-ей давности? Тем не менее, оно развивается и уже работает (как пруф-чекеры, как минимум).
Или, например, generics (про которые те два тезиса) работают — чтобы сделать свой «msgpack» в хаскеле можно положиться на автоматические deriving и instance (Generic строит модель типа на суммах/произведениях — Binary её использует):
{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
import Data.Binary
import Data.ByteString
import GHC.Generics
data Msg
= Fix !Int
| Flt !Double
| Str !ByteString
| Arr ![Msg]
deriving (Show, Eq, Generic)
instance Binary Msg
msg = Arr [Fix (2 ^ 63 - 1), Flt 1e73, Str "1234567890"]
en = encode msg
-- Data.ByteString.Lazy.length en == 63
de = decode en :: Msg
t1 = msg == de
Исходная версия quasimoto, :
Так все осиальное на том же уровне - устаревшие банальности и тривиальщина.
А зависимые типы — банальность и тривиальщина 40-ей давности? Тем не менее, оно развивается и уже работает (как пруф-чекеры, как минимум).
Или, например, generics (про которые те два тезиса) работают — чтобы сделать свой «msgpack» в хаскеле можно положиться на автоматические deriving и instance (Generic строит модель типа на суммах/произведениях — Binary её использует):
{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
import Data.Binary
import Data.ByteString
import GHC.Generics
data Msg
= Fix !Int
| Flt !Double
| Str !ByteString
| Arr ![Msg]
deriving (Show, Eq, Generic)
instance Binary Msg
msg = Arr [Fix (2 ^ 63 - 1), Flt 1e73, Str "1234567890"]
en = encode msg
de = decode en :: Msg
t1 = msg == de