SlideShare a Scribd company logo
@zr_tex8r
otfm
refactor-internal
F-ing modules [Rossberg, Russo & Dreyer 2014]
direct
open
signature Ord = sig
type t
val compare : t -> t -> int
end
module MakeMap(Key : Ord) : (sig
type key
type ’v t
val empty : ’v t
val add : key -> ’v -> ’v t -> ’v t
⋮
end with key = Key.t) = struct
⋮
end
signature Ord = sig
type t
val compare : t -> t -> int
end
module MakeMap(Key : Ord) : (sig
type key
type ’v t
val empty : ’v t
val add : key -> ’v -> ’v t -> ’v t
⋮
end with key = Key.t) = struct
⋮
end
signature Ord = sig
type t
val compare : t -> t -> int
end
module MakeMap(Key : Ord) : (sig
type key
type ’v t
val empty : ’v t
val add : key -> ’v -> ’v t -> ’v t
⋮
end with key = Key.t) = struct
⋮
end
NumberMap
module NumberMap =
MakeMap(struct
type t = int
let compare x y = y - x
end)
code
@require code
module PythonCode =
Code.Make(struct
val base-font = (`Menlo`, 1., 0.)
val highlight = Code.Syntax.python
end)
⋮
{… PythonCode.code(`print(“Hi!")`); …}
code
@require code
open
Code.Make(struct
val base-font = (`Menlo`, 1., 0.)
val highlight = Code.Syntax.python
end)
⋮
{… code(`print(“Hi!")`); …}
open
context
module FontScheme : sig
val set-italic : string -> context -> context
val get-italic : context -> string
⋮
end = struct
context-entry ##italic : string = `Junicode-it`
let set-italic name ctx = (ctx with ##italic = name)
let get-italic ctx = ctx##italic
⋮
end
context-entry ##italic : string = `Junicode-it`
ctx##italic
(ctx with ##italic = name)
%list.satyg
module List : sig
⋮
val map : ('a -> 'b) -> 'a list -> 'b list
@doc {
`List.map f xs` `xs`
`f`
}
⋮
end = struct
⋮
end
$ satysfi doc generate list.satyg
% bnf.satyh
@require math
@doc @require code
@doc @require math
@doc open Math
@doc @require bnf
module Bnf : sig
val bnf : [math; (math list) list] inline-cmd
@doc {
BNF 1
2
Code.display(```
Bnf.bnf(${M})[
${| c | x | M M | lambda x. M |};
${| text!{let} x = M text!{in} M |};
];
```);%
Bnf.bnf(${M})[
${| c | x | M M | lambda x. M |};
${| text!{let} x = M text!{in} M |};
];%
}
end = struct … end
math-char math-paren inline-result
inline-result inline-boxes string
type math-class = MathOrd | MathBin | …
type math = math-element list
and math-element =
| MathSuperscript of math * math
| MathSubscript of math * math
| MathFraction of math * math
| MathChar of math-class * math-char
| MathParen of math-paren * math-paren * math
| MathGeneralInline of inline-result
⋮
let-rec output (m : math) : string =
String.concat ` ` (List.map output-element m)
and output-element elem =
match elem with
| MathSuperscript(m1, m2) ->
output m1 ^ `_{` ^ output m2 ^ `}`
| MathSubscript(m1, m2) ->
output m1 ^ `^{` ^ output m2 ^ `}`
| MathFraction(m1, m2) ->
`frac{` ^ output m1 ^ `}{` ^ output m2 ^ `}`
| MathChar(mclass, mchar) ->
… %
⋮
let-math
let-math tinfo leq =
let color = get-text-color tinfo in
let char = make-char-info `≤` (| color = color; … |) in
MathChar(MathRel, char)
mathord{textcolor{0,0,0}{3.05}}
mathrel{textcolor{0,0,0}{leq}}
mathord{textcolor{0,0,0}{pi}}
${3.05 leq pi}
SATySFiのこれからの課題たち
SATySFiのこれからの課題たち

More Related Content

What's hot

Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskellVim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
aiya000
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門
k h
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
xenophobia__
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible Effects
Hiromi Ishii
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
Kenjiro Sugimoto
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
ARC#003D
ARC#003DARC#003D
ARC#003D
nullmineral
 
ガウス過程入門
ガウス過程入門ガウス過程入門
ガウス過程入門
ShoShimoyama
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
Lintaro Ina
 
固有表現抽出について
固有表現抽出について固有表現抽出について
固有表現抽出について
Syo Kyojin
 
変分法
変分法変分法
変分法
弘毅 露崎
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
T. Suwa
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data Science
Kenji Hiranabe
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
 

What's hot (20)

Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskellVim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
 
ホモトピー型理論入門
ホモトピー型理論入門ホモトピー型理論入門
ホモトピー型理論入門
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible Effects
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
ARC#003D
ARC#003DARC#003D
ARC#003D
 
ガウス過程入門
ガウス過程入門ガウス過程入門
ガウス過程入門
 
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
 
固有表現抽出について
固有表現抽出について固有表現抽出について
固有表現抽出について
 
変分法
変分法変分法
変分法
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
Za atsu-20170328
Za atsu-20170328Za atsu-20170328
Za atsu-20170328
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data Science
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 

Similar to SATySFiのこれからの課題たち

Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
Mohan Raj
 
For this homework, you will write a program to create and manipulate.pdf
For this homework, you will write a program to create and manipulate.pdfFor this homework, you will write a program to create and manipulate.pdf
For this homework, you will write a program to create and manipulate.pdf
herminaherman
 
Data Structure using C
Data Structure using CData Structure using C
Data Structure using C
Bilal Mirza
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#bleis tift
 
Please solve the following problem using C++- Thank you Instructions-.docx
Please solve the following problem using C++- Thank you Instructions-.docxPlease solve the following problem using C++- Thank you Instructions-.docx
Please solve the following problem using C++- Thank you Instructions-.docx
PeterlqELawrenceb
 
hello- please dont just copy from other answers- the following is the.docx
hello- please dont just copy from other answers- the following is the.docxhello- please dont just copy from other answers- the following is the.docx
hello- please dont just copy from other answers- the following is the.docx
Isaac9LjWelchq
 
Input output functions
Input output functionsInput output functions
Input output functionshyderali123
 
Monads - Dublin Scala meetup
Monads - Dublin Scala meetupMonads - Dublin Scala meetup
Monads - Dublin Scala meetup
Mikhail Girkin
 
Data Structure in C Programming Language
Data Structure in C Programming LanguageData Structure in C Programming Language
Data Structure in C Programming Language
Arkadeep Dey
 
Create a C program which auto-completes suggestions when beginning t.pdf
Create a C program which auto-completes suggestions when beginning t.pdfCreate a C program which auto-completes suggestions when beginning t.pdf
Create a C program which auto-completes suggestions when beginning t.pdf
fedosys
 
2D array
2D array2D array
2D array
A. S. M. Shafi
 
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
rushabhshah600
 
An introduction to matlab
An introduction to matlabAn introduction to matlab
An introduction to matlab
Dr. Andrew Wallace PhD
 
DataFrame in Python Pandas
DataFrame in Python PandasDataFrame in Python Pandas
DataFrame in Python Pandas
Sangita Panchal
 
Concepts of C [Module 2]
Concepts of C [Module 2]Concepts of C [Module 2]
Concepts of C [Module 2]
Abhishek Sinha
 
Cse 121 presentation on matrix [autosaved]
Cse 121 presentation on matrix [autosaved]Cse 121 presentation on matrix [autosaved]
Cse 121 presentation on matrix [autosaved]
Kanis Fatema Shanta
 
Assignment 2 lab 3 python gpa calculator
Assignment 2 lab 3  python gpa calculatorAssignment 2 lab 3  python gpa calculator
Assignment 2 lab 3 python gpa calculator
Nagiob Doma
 
Workshop on command line tools - day 2
Workshop on command line tools - day 2Workshop on command line tools - day 2
Workshop on command line tools - day 2
Leandro Lima
 
python_lab_manual_final (1).pdf
python_lab_manual_final (1).pdfpython_lab_manual_final (1).pdf
python_lab_manual_final (1).pdf
keerthu0442
 

Similar to SATySFiのこれからの課題たち (20)

Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 
For this homework, you will write a program to create and manipulate.pdf
For this homework, you will write a program to create and manipulate.pdfFor this homework, you will write a program to create and manipulate.pdf
For this homework, you will write a program to create and manipulate.pdf
 
Data Structure using C
Data Structure using CData Structure using C
Data Structure using C
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 
Please solve the following problem using C++- Thank you Instructions-.docx
Please solve the following problem using C++- Thank you Instructions-.docxPlease solve the following problem using C++- Thank you Instructions-.docx
Please solve the following problem using C++- Thank you Instructions-.docx
 
hello- please dont just copy from other answers- the following is the.docx
hello- please dont just copy from other answers- the following is the.docxhello- please dont just copy from other answers- the following is the.docx
hello- please dont just copy from other answers- the following is the.docx
 
Input output functions
Input output functionsInput output functions
Input output functions
 
Monads - Dublin Scala meetup
Monads - Dublin Scala meetupMonads - Dublin Scala meetup
Monads - Dublin Scala meetup
 
Data Structure in C Programming Language
Data Structure in C Programming LanguageData Structure in C Programming Language
Data Structure in C Programming Language
 
Create a C program which auto-completes suggestions when beginning t.pdf
Create a C program which auto-completes suggestions when beginning t.pdfCreate a C program which auto-completes suggestions when beginning t.pdf
Create a C program which auto-completes suggestions when beginning t.pdf
 
2D array
2D array2D array
2D array
 
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
 
An introduction to matlab
An introduction to matlabAn introduction to matlab
An introduction to matlab
 
DataFrame in Python Pandas
DataFrame in Python PandasDataFrame in Python Pandas
DataFrame in Python Pandas
 
Matlab1
Matlab1Matlab1
Matlab1
 
Concepts of C [Module 2]
Concepts of C [Module 2]Concepts of C [Module 2]
Concepts of C [Module 2]
 
Cse 121 presentation on matrix [autosaved]
Cse 121 presentation on matrix [autosaved]Cse 121 presentation on matrix [autosaved]
Cse 121 presentation on matrix [autosaved]
 
Assignment 2 lab 3 python gpa calculator
Assignment 2 lab 3  python gpa calculatorAssignment 2 lab 3  python gpa calculator
Assignment 2 lab 3 python gpa calculator
 
Workshop on command line tools - day 2
Workshop on command line tools - day 2Workshop on command line tools - day 2
Workshop on command line tools - day 2
 
python_lab_manual_final (1).pdf
python_lab_manual_final (1).pdfpython_lab_manual_final (1).pdf
python_lab_manual_final (1).pdf
 

More from T. Suwa

PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
 
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
T. Suwa
 
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
T. Suwa
 
ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論
T. Suwa
 
レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論
T. Suwa
 
Macrodown -MLが使えるML-
Macrodown -MLが使えるML-Macrodown -MLが使えるML-
Macrodown -MLが使えるML-
T. Suwa
 

More from T. Suwa (6)

PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
 
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
 
ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論
 
レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論
 
Macrodown -MLが使えるML-
Macrodown -MLが使えるML-Macrodown -MLが使えるML-
Macrodown -MLが使えるML-
 

Recently uploaded

MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
Kamal Acharya
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
Amil Baba Dawood bangali
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
karthi keyan
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
Jayaprasanna4
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
ankuprajapati0525
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 

Recently uploaded (20)

MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 

SATySFiのこれからの課題たち

  • 1.
  • 2.
  • 3.
  • 5.
  • 6.
  • 7.
  • 9.
  • 10.
  • 11.
  • 12. F-ing modules [Rossberg, Russo & Dreyer 2014] direct open
  • 13. signature Ord = sig type t val compare : t -> t -> int end module MakeMap(Key : Ord) : (sig type key type ’v t val empty : ’v t val add : key -> ’v -> ’v t -> ’v t ⋮ end with key = Key.t) = struct ⋮ end
  • 14. signature Ord = sig type t val compare : t -> t -> int end module MakeMap(Key : Ord) : (sig type key type ’v t val empty : ’v t val add : key -> ’v -> ’v t -> ’v t ⋮ end with key = Key.t) = struct ⋮ end
  • 15. signature Ord = sig type t val compare : t -> t -> int end module MakeMap(Key : Ord) : (sig type key type ’v t val empty : ’v t val add : key -> ’v -> ’v t -> ’v t ⋮ end with key = Key.t) = struct ⋮ end NumberMap module NumberMap = MakeMap(struct type t = int let compare x y = y - x end)
  • 16. code @require code module PythonCode = Code.Make(struct val base-font = (`Menlo`, 1., 0.) val highlight = Code.Syntax.python end) ⋮ {… PythonCode.code(`print(“Hi!")`); …}
  • 17. code @require code open Code.Make(struct val base-font = (`Menlo`, 1., 0.) val highlight = Code.Syntax.python end) ⋮ {… code(`print(“Hi!")`); …} open
  • 18.
  • 19. context module FontScheme : sig val set-italic : string -> context -> context val get-italic : context -> string ⋮ end = struct context-entry ##italic : string = `Junicode-it` let set-italic name ctx = (ctx with ##italic = name) let get-italic ctx = ctx##italic ⋮ end
  • 20. context-entry ##italic : string = `Junicode-it` ctx##italic (ctx with ##italic = name)
  • 21.
  • 22. %list.satyg module List : sig ⋮ val map : ('a -> 'b) -> 'a list -> 'b list @doc { `List.map f xs` `xs` `f` } ⋮ end = struct ⋮ end $ satysfi doc generate list.satyg
  • 23. % bnf.satyh @require math @doc @require code @doc @require math @doc open Math @doc @require bnf module Bnf : sig val bnf : [math; (math list) list] inline-cmd @doc { BNF 1 2 Code.display(``` Bnf.bnf(${M})[ ${| c | x | M M | lambda x. M |}; ${| text!{let} x = M text!{in} M |}; ]; ```);% Bnf.bnf(${M})[ ${| c | x | M M | lambda x. M |}; ${| text!{let} x = M text!{in} M |}; ];% } end = struct … end
  • 24.
  • 25. math-char math-paren inline-result inline-result inline-boxes string type math-class = MathOrd | MathBin | … type math = math-element list and math-element = | MathSuperscript of math * math | MathSubscript of math * math | MathFraction of math * math | MathChar of math-class * math-char | MathParen of math-paren * math-paren * math | MathGeneralInline of inline-result ⋮
  • 26. let-rec output (m : math) : string = String.concat ` ` (List.map output-element m) and output-element elem = match elem with | MathSuperscript(m1, m2) -> output m1 ^ `_{` ^ output m2 ^ `}` | MathSubscript(m1, m2) -> output m1 ^ `^{` ^ output m2 ^ `}` | MathFraction(m1, m2) -> `frac{` ^ output m1 ^ `}{` ^ output m2 ^ `}` | MathChar(mclass, mchar) -> … % ⋮
  • 27. let-math let-math tinfo leq = let color = get-text-color tinfo in let char = make-char-info `≤` (| color = color; … |) in MathChar(MathRel, char) mathord{textcolor{0,0,0}{3.05}} mathrel{textcolor{0,0,0}{leq}} mathord{textcolor{0,0,0}{pi}} ${3.05 leq pi}