SlideShare a Scribd company logo
MixML 作ってみる
ひげ
whoami
今日まで学生!
おごってください
明後日から東京勤務
好きな(ML系)言語 : Haskell OCaml
モジュール・レコード・バリアント いいよね
最近 : Haskell Antenna をリニューアルした
Backpack in Haskell
知ってる人?
※ ここで Haskell という単語は GHC の別名として使っています
Backpack
Haskell に強いモジュール性を追加するための新し
いモジュールシステム
GHC 8.2より利用可能 (stack はまだ未対応)
MixML という言語をベースにしている (らしい)
-- Str.hsig って感じの記法が追加
signature Str where
data Str
instance Eq Str
null :: Str -> Bool
singleton :: Char -> Str
splits :: Str -> [(Str, Str)]
parts :: Str -> [[Str]]
MixML
(ここからが本題)
ML系モジュールシステム + Mixin モジュールシス
テムの研究言語
Mixin’ Up the ML Module System (ICFP2008)
SML/NJでの実装があった
MixMLのサンプル
ココから引用
unit Fib =
link F = {val fib' : int -> int -> int -> int} with
{
val fib' (n2 : int) (n1 : int) (n : int) =
if n == 0 then n2
else if n == 1 then n1
else F.fib' n1 (n1 + n2) (n - 1)
val fib = fib' 0 1
}
module F = !Fib
do print "fib 10 = "; print (F.fib 10); print "n"
Mixinモジュールシステム
(ML系モジュールシステムは教養なので割愛)
Object-oriented programming with Flavors 由来
のモノ
“mixin is an abstract subclass”
Mixin モジュールの利点は再帰リンク
モジュールの合成が一種の再帰リンク
ML での(相互)再帰モジュールの分割コンパイル
における問題を解決してくれる
MixML よくわからない
ので実装してみることにした
(Haskell で)
取りあえずできた
まだぜんぜん途中
matsubara0507/mixml-hs
感想
parsec しんどい
とうか構文解析しんどい
SML -> Haskell のしんどさ
気軽に例外を投げやがって
気軽に破壊的代入を使いやがって
気軽に内部状態を持ちやがって
セルフ型推論しんどい(笑)
おまけ
Docker image を作った
matsubara0507/docker-mixml
おしまい

More Related Content

PPT
アルゴリズムとデータ構造14
PPTX
Python Project (2)
PPTX
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
PDF
C++の未来と演算子オーバーロード
PDF
ヘテロなクラスタ環境に適した 並列誤差逆伝搬アルゴリズム
PPTX
圏論とHaskellは仲良し
PDF
圏論のモナドとHaskellのモナド
PDF
圏とHaskellの型
アルゴリズムとデータ構造14
Python Project (2)
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
C++の未来と演算子オーバーロード
ヘテロなクラスタ環境に適した 並列誤差逆伝搬アルゴリズム
圏論とHaskellは仲良し
圏論のモナドとHaskellのモナド
圏とHaskellの型

What's hot (6)

PDF
Sort
PDF
CuPyでAx=bを解きたかった話
PPTX
My code
PDF
入門パターン認識と機械学習15章
PDF
Path Decompositionを用いたメモリ効率の良い動的キーワード辞書の実装法(ポスター)
PPTX
Nds meetup8 lt
Sort
CuPyでAx=bを解きたかった話
My code
入門パターン認識と機械学習15章
Path Decompositionを用いたメモリ効率の良い動的キーワード辞書の実装法(ポスター)
Nds meetup8 lt
Ad

More from Nobutada Matsubara (20)

PDF
Haskell で作る競技型イベントの裏側
PDF
Marp Next Theme: Colors
PDF
Marp Next Tips !
PDF
Haskell で CLI
PDF
貧者のための「cron」
PDF
Build Dockferile with Haskell
PDF
Elixir Programming with Type checking
PDF
Elm でなんかつくる
PDF
Haskell と Elm と JSON の話
PDF
ADVENTAR の Bot を作る with Haskell
PDF
Haskell Backpack 事始め
PDF
GitHub での Haskell の色が変わったんで
PDF
日記って続かないよね...
PDF
「7つの言語、7つの世界」を読む
PDF
Lisper はじめました (再)
PDF
Haskell で LINE Bot を作ってみた
PDF
Marp colors
PDF
PDF
Whitespcae 入門
PDF
入門 超絶技巧プログラミング !
Haskell で作る競技型イベントの裏側
Marp Next Theme: Colors
Marp Next Tips !
Haskell で CLI
貧者のための「cron」
Build Dockferile with Haskell
Elixir Programming with Type checking
Elm でなんかつくる
Haskell と Elm と JSON の話
ADVENTAR の Bot を作る with Haskell
Haskell Backpack 事始め
GitHub での Haskell の色が変わったんで
日記って続かないよね...
「7つの言語、7つの世界」を読む
Lisper はじめました (再)
Haskell で LINE Bot を作ってみた
Marp colors
Whitespcae 入門
入門 超絶技巧プログラミング !
Ad

MixML 作ってみる