SlideShare una empresa de Scribd logo
1 de 30
XMonad-oid on Emacs &
More functional Emacs Lisp
岡田 健 (keno)
自己紹介
岡田 健 (keno, Twitter: @keno_ss)
京都大学 数理解析研究所
Lisper, Schemer
最近はHaskellに興味がある (質問していいですか)
けど実際はEmacs Lispばっかり書いてる
Emacs Lispって不便な言語ですよね
作ったもの
個人的テーマ
「(最小の性能の犠牲で)読みやすく書きやすくデバッグしやすいEmacs
Lispの環境を整備しよう」
ewm.el (EmacsWMonad; XMonod-oid on Emacs)
debug-print.el (Gauche’s nice printf-debugging)
ERFI (SRFI in Emacs Lisp)
hairs.el (Haskell influenced record syntax)
次はR7RSのdefine-library的な仕組みが欲しい (名前空間がないので)
今日の話
XMonad-oid on Emacs
ewm.el
More functional Emacs Lisp
ERFI の紹介
hairs.el の紹介
XMonad-oid on Emacs
そもそもこれがやりたくて
(作り直したくて)
色々整備してる
今日は時間ないので無理
興味ある人は個人的に
More functional Emacs Lisp
Lispって関数型なの?
Lisp
No (by “Let Over Lambda”).
Scheme
Maybe yes.
参照透明性は言語では保証されないけど書き方としては推奨されている
Common Lisp
知らない
CLerも不満らしい? (深町英太郎「誰向けかわからないCommon Lispでの
関数型プログラミング入門とその未来」)
Emacs Lispは関数型?
Definitely no.
dynamic binding (not lexical binding)
let 内で lambda 使うときは注意しないとデバッグできないバグが
Emacs LispはCL寄りなLisp (でも「cl.el使うな」って言われる)
末尾呼び出しの最適化がない (CL処理系の多くでは使えるけど)
ループは while かCL系の loop とか do-times とか
函数が破壊的版しかないことが多い
append-map! (mapcon) はあるけど append-map がない
けど最近は (emacs 24.3)
lexical-binding や closure が使えるように! (>= 24)
cl.el が cl-lib.el になって(一応)使ってもいいことになった
けど cl.el でできたことが一部できなかったり面倒だったり
gv.el (generalized variables; 汎変数)の仕組み(高階函数)
pcase.el (ML-style pattern-matching macro for Elisp)
でもまだ足りない. 動き始めたばかり.
ライブラリ書いた
(書いてる)
ERFI
えるふぃ (ポケモンではない)
Schemeの標準的なライブラリSRFI(+Gaucheの拡張)のEmacs版(にで
きたらいいな)とか既存のイディオム(覚えられんし読めん)の改善とか
SRFI 1: リストライブラリ
SRFI 2 26 61 67: and-let* cut cute cond case ecase
SRFI 5: 名前付きlet, 末尾再帰の最適化
「Elisp は CL じゃねぇ!」と言ってるしこういうのあってもいいかなと
named let
普通の変数束縛 + 名前付き函数の束縛
(defun fact-slow (n) ; 非末尾再帰
(if (zerop n)
1
(* n (fact-slow (- n 1)))))
(defun fact/tco (n) ; 末尾再帰
(fact-aux n 1))
(defun fact-aux (n r)
(if (zerop n)
r
(fact-aux (- n 1) (* r n))))
(defun fact (n) ; 名前付きlet
(let iter (n r)
(if (zerop n)
r
(iter (- n 1) (* r n))))
末尾再帰の最適化
「Emacs Lispに末尾再帰の最適化が欲しい」という話は少なくとも2004年
にGNUのメーリングリストに流れてる. (Oliver Scholz, “tail recursion hack in
Emacs Lisp?”)
2013年までは nlet.el というのもあった. (今は消えてる)
「末尾再帰最適化は理論上は実装可能(unwindしちゃまずいケースを除いて)
です。が、末尾再帰最適化が行なわれることを想定したコードを古いEmacs
で実行すると悲惨なことになるので、結局のところ永遠に実装されないと思
います。」(わからん, Emacs Lisp で末尾再帰, コメント欄)
個人的な意見: 古いEmacsのことを考えて読めないプログラムを書きたくな
いし読みたくない.
Scholz版 と nlet.el
コンパイル時にマクロで再帰呼び出しを while ループに書き換える
だがバグがあり使い物にならない
引数の評価の順序に依存 (nlet.el)
制限も強い
末尾再帰の形でなかったり progn を混ぜるとバグる
本当に扱いたいのは末尾再帰の場合だが書いてるときは色々試したい
funcall とか mapcar できない
実は変換後のループが函数呼び出ししていて効率が悪い
erfi:let
インターフェースは SRFI 5 (named let)
R5RSから末尾文脈の概念
実装はScholz版を参考に
nlet.el もbugは取れたけど生成されるコードの
質が良くなかった
例
(defun fact (n)
(erfi:let iter ((n 5) (r 1))
(if (zerop n)
r
(iter (1- n) (* r n)))))
(defun fact (n)
(let ((--erfi-continue-- t)
(--erfi-result-- nil)
(G4201 n)
(G4202 1)
(n nil)
(r nil))
(while --erfi-continue--
(setq n G4201)
(setq r G4202)
(catch '--erfi-repeat--
(setq --erfi-result--
(if (zerop n)
r
(progn
(setq G4201 (1- n))
(setq G4202 (* r n))
(throw '--erfi-repeat-- nil))))
(setq --erfi-continue-- nil)))
--erfi-result--)
展開
変数適用順序
に非依存
入れ子の例: リストの等価性
(defun erfi:list= (elt= &rest xss)
(if (let1 len (length (car xss))
(not (erfi:every1 (lambda (xs) (eq len (length xs))) (cdr xss))))
nil
(erfi:let outer-iter ((xss xss))
(if (null (cdr xss))
t
(erfi:let inner-iter ((xs (car xss))
(ys (cadr xss)))
(if (null xs)
(outer-iter (cdr xss))
(and (funcall elt= (car xs) (car ys))
(inner-iter (cdr xs) (cdr ys)))))))))
流石に展開したのは載せられないので
家に帰ってmacroexpandしてね
生でwhileループで書きたくないものの一つ
Haskellの話
Haskellって良い言語ですよね
((圏論好きなので)Haskellの方に行ってみたい)
((でも) (括弧 (ない (と)) 不安))
LispはどんどんHaskellとかの良い点を取り込むべき
Gaucheも $ をマクロとして取り込んだりしてる
括弧があるからこそ簡単に可能なLispの強みのマクロ!!
(とか言ったらHaskellerからマサカリ飛んできそう)
レコード構文data Person = Person { firstName :: String
, lastName :: String
, age :: Int
, phoneNumber :: String
} deriving (Show)
data Book = Book { author :: Person
, title :: String
, price :: Int
} derivin (Show)
let author = Person "Saunders" "MacLane" 30 "unknown"
let book = Book author "Categories for the Working Mathematician" 8500
book { author : author book { lastName : "Mac Lane"
, age : 95
, phoneNumber : "unknown"
}
, price : 3000
}コピーして返す(非破壊的)
但しいくつかは新しい値に
再帰的に使える!
Emacs Lispにも
レコード構文を
XMonad-oid on Emacsに使いたい(使ってる)
evm-util.el (2013年)
hairs.el (2014年)
ewm-util.el
cl.el の構造体を再帰的に非破壊的にコピー
構造体の(型)情報を動的に取得している
cl.el は getter は作るけど setter は作らない
setf (汎変数の仕組み)を使わざるを得ない
なので函数として実装 (遅い)
hairs.el
(Haskell influenced record syntax)
動的型付け言語のLispだけどこういう部分では静的にやった方が良い
型情報を与えてやれば静的にできる
マクロとしてDSLを実装
コンパイルで効率の良いコードを生成
でもいちいち指定するのは面倒
型推論 (というほどのものではないけど)
alist, plist, hash-table, array, struct, eieio (CLOS) に対応
(hairs-copy '((:hoge . hoge)
(:fuga . fuga)
(:foo . foo)
(:bar . (:john "Smith" :jane "Smith")))
(with :alist
:hoge 'hogehoge
:foo => (lambda (x) (list x x))
:bar (with :plist
:john "Hi"
:jane "Hello")))
'((:hoge . hogehoge)
(:fuga . fuga)
(:foo . (foo foo))
(:bar . (:john "Hi" :jane "Hello")))
固定値
型情報
古い値から
新しい値を作る 再帰的
(cl-defstruct hairs:person name age sex)
(cl-defstruct hairs:group name description member)
(hairs-register-type
'((:struct hairs:group) member)
'(:alist (:struct hairs:person)))
(with (:struct hairs:group)
:member (with :alist
b (with (:struct hairs:person)
:name "Neo")))
(with (:struct hairs:group)
:member (w/ b (w/ :name "Neo")))
Any questions or comments?
Twitter: @keno_ss
GitHub: https://github.com/kenoss
まだコード上げてない(近日中に)
コメント, 要望, pull-req歓迎
ありがとうございました
Twitter: @keno_ss
GitHub: https://github.com/kenoss
まだコード上げてない(近日中に)
コメント, 要望, pull-req歓迎

Más contenido relacionado

La actualidad más candente

Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字
Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字
Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字ynupc
 
Scalaの文字列処理 Day 3 コードポイントとサロゲートペア
Scalaの文字列処理 Day 3 コードポイントとサロゲートペアScalaの文字列処理 Day 3 コードポイントとサロゲートペア
Scalaの文字列処理 Day 3 コードポイントとサロゲートペアynupc
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsHiromi Ishii
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたKazuyuki TAKASE
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門Kimikazu Kato
 
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)t-sin
 
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてSECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてt-sin
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)x1 ichi
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32kikairoya
 
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみたScala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみたKazuyuki TAKASE
 
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿MITSUNARI Shigeo
 

La actualidad más candente (20)

Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字
Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字
Scalaの文字列処理 Day 2 リテラル・補間子・特殊な文字
 
Scalaの文字列処理 Day 3 コードポイントとサロゲートペア
Scalaの文字列処理 Day 3 コードポイントとサロゲートペアScalaの文字列処理 Day 3 コードポイントとサロゲートペア
Scalaの文字列処理 Day 3 コードポイントとサロゲートペア
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible Effects
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
M-expr
M-exprM-expr
M-expr
 
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
 
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについてSECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
Lisp study
Lisp studyLisp study
Lisp study
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
SEH on mingw32
SEH on mingw32SEH on mingw32
SEH on mingw32
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみたScala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
 
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
 

Destacado (15)

Ucasa lpowerpoint
Ucasa lpowerpointUcasa lpowerpoint
Ucasa lpowerpoint
 
Power pont, pueblos aborígenes de America.
Power pont, pueblos aborígenes de America.Power pont, pueblos aborígenes de America.
Power pont, pueblos aborígenes de America.
 
Salesmash
SalesmashSalesmash
Salesmash
 
Rubber Flooring
Rubber FlooringRubber Flooring
Rubber Flooring
 
Data Handling
Data HandlingData Handling
Data Handling
 
Rubber Matting
Rubber MattingRubber Matting
Rubber Matting
 
Aravind adiga by anurag
Aravind adiga by anuragAravind adiga by anurag
Aravind adiga by anurag
 
El secreto
El secretoEl secreto
El secreto
 
Cv mahboob
Cv mahboobCv mahboob
Cv mahboob
 
Submission of second semi fiscal report
Submission of second semi fiscal reportSubmission of second semi fiscal report
Submission of second semi fiscal report
 
Pdhpe slideshow
Pdhpe slideshowPdhpe slideshow
Pdhpe slideshow
 
PTCL_Report
PTCL_ReportPTCL_Report
PTCL_Report
 
Children's Fun Day 2015
Children's Fun Day 2015Children's Fun Day 2015
Children's Fun Day 2015
 
Bullyingbotacio3
Bullyingbotacio3Bullyingbotacio3
Bullyingbotacio3
 
mônica
mônicamônica
mônica
 

Similar a XMonad-oid on Emacs & More functional Emacs Lisp | 関数型LT大会

超初心者がローマ数字をいろいろパースしてみる
超初心者がローマ数字をいろいろパースしてみる超初心者がローマ数字をいろいろパースしてみる
超初心者がローマ数字をいろいろパースしてみるいずみ よねざわ
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介fukuoka.ex
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPUgos-k
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.jsYoshiiro Ueno
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシンt-sin
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Ra Zon
 
多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーターKeiichiro Shikano
 
One - Common Lispでもワンライナーしたい
One - Common LispでもワンライナーしたいOne - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたいt-sin
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)Satoshi Yamada
 
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009Tsukasa Oi
 
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったかm2ym
 
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Nobutada Matsubara
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmMinero Aoki
 

Similar a XMonad-oid on Emacs & More functional Emacs Lisp | 関数型LT大会 (20)

超初心者がローマ数字をいろいろパースしてみる
超初心者がローマ数字をいろいろパースしてみる超初心者がローマ数字をいろいろパースしてみる
超初心者がローマ数字をいろいろパースしてみる
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
続・SECDマシン
続・SECDマシン続・SECDマシン
続・SECDマシン
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
MmapScanner
MmapScannerMmapScanner
MmapScanner
 
PFI Seminar 2010/02/18
PFI Seminar 2010/02/18PFI Seminar 2010/02/18
PFI Seminar 2010/02/18
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター多値で簡単パーサーコンビネーター
多値で簡単パーサーコンビネーター
 
One - Common Lispでもワンライナーしたい
One - Common LispでもワンライナーしたいOne - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
 
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
 
Sml#探検隊
Sml#探検隊Sml#探検隊
Sml#探検隊
 
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
 

Último

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Último (9)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

XMonad-oid on Emacs & More functional Emacs Lisp | 関数型LT大会