moonscript advent calendar - 3〜25日目moonscriptadventcalendar 自己紹介 2日目 3日目...

57
MoonScript Advent Calendar 325 日目 ʇɫʛ〜ɬʛ 2015 12/02

Upload: others

Post on 10-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

3〜25日目

2015 12/02

Page 2: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

〜j

闇 ー

25日分 ベン ン ー5分 進 自己紹介 時間け い

今日 12/02 い 2日目

自己紹介 1/20

Page 3: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

〜j

闇 ー

25日分 ベン ン ー5分 進 自己紹介 時間け い

今日 12/02 い 2日目

自己紹介 1/20

Page 4: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 5: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript ?

◮ AltLua Python CoffeeScript い◮ with 内包表記 構文 増 い◮ class 本格的 OOP

MoonScript classclass Foonew: (@bar) =>baz: => print "bar: #{@bar}"

compile!

いい!! 短い!!ン ン ン 手軽 始 詳 く公式 *1

generated Lualocal Foodolocal _base_0 = {baz = function(self)return print("bar: " .. tostring(self.bar))

end}_base_0.__index = _base_0local _class_0 = setmetatable({__init = function(self, bar)self.bar = bar

end,__base = _base_0,__name = "Foo"

........

*1 http://moonscript.org/

2 日目 2/20

Page 6: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript ?

◮ AltLua Python CoffeeScript い◮ with 内包表記 構文 増 い◮ class 本格的 OOP

MoonScript classclass Foonew: (@bar) =>baz: => print "bar: #{@bar}"

compile!

いい!! 短い!!ン ン ン 手軽 始 詳 く公式 *1

generated Lualocal Foodolocal _base_0 = {baz = function(self)return print("bar: " .. tostring(self.bar))

end}_base_0.__index = _base_0local _class_0 = setmetatable({__init = function(self, bar)self.bar = bar

end,__base = _base_0,__name = "Foo"

........

*1 http://moonscript.org/

2 日目 2/20

Page 7: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript ?

◮ AltLua Python CoffeeScript い◮ with 内包表記 構文 増 い◮ class 本格的 OOP

MoonScript classclass Foonew: (@bar) =>baz: => print "bar: #{@bar}"

compile! ⇒

いい!! 短い!!ン ン ン 手軽 始 詳 く公式 *1

generated Lualocal Foodolocal _base_0 = {baz = function(self)return print("bar: " .. tostring(self.bar))

end}_base_0.__index = _base_0local _class_0 = setmetatable({__init = function(self, bar)self.bar = bar

end,__base = _base_0,__name = "Foo"

........

*1 http://moonscript.org/

2 日目 2/20

Page 8: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript ?

◮ AltLua Python CoffeeScript い◮ with 内包表記 構文 増 い◮ class 本格的 OOP

MoonScript classclass Foonew: (@bar) =>baz: => print "bar: #{@bar}"

compile! ⇒

いい!! 短い!!ン ン ン 手軽 始 詳 く公式 *1

generated Lualocal Foodolocal _base_0 = {baz = function(self)return print("bar: " .. tostring(self.bar))

end}_base_0.__index = _base_0local _class_0 = setmetatable({__init = function(self, bar)self.bar = bar

end,__base = _base_0,__name = "Foo"

........

*1 http://moonscript.org/2 日目 2/20

Page 9: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 10: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•わ〜〜い 12/03 冴草 い 誕生日 !!!!!

require'luakatsu'Aikatsu.Kii!-- name 冴草 い-- actor 秋奈-- birthday 12/03-- blood_type O-- favorite_foods ンサン ー-- special_ablity ソ ン-- favorite_brand MAGICAL TOY-- type Pop-- signature_songs-- sing 市倉 有菜-- school ー ・ ー

Luakatsu v3 draft function

require'luakatsu'-- `find_birthday` returns matched idol table((x) -> x and x!) (Aikatsu.find_birthday"12/03")-- name 冴草 い-- actor 秋奈-- birthday 12/03-- blood_type O-- ...

! 秋奈 ン劇場版 い !!!!

!!Luakatsu v3 12/03 ー 予定!!

3 日目 3/20

Page 11: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•わ〜〜い 12/03 冴草 い 誕生日 !!!!!

require'luakatsu'Aikatsu.Kii!-- name 冴草 い-- actor 秋奈-- birthday 12/03-- blood_type O-- favorite_foods ンサン ー-- special_ablity ソ ン-- favorite_brand MAGICAL TOY-- type Pop-- signature_songs-- sing 市倉 有菜-- school ー ・ ー

Luakatsu v3 draft function

require'luakatsu'-- `find_birthday` returns matched idol table((x) -> x and x!) (Aikatsu.find_birthday"12/03")-- name 冴草 い-- actor 秋奈-- birthday 12/03-- blood_type O-- ...

! 秋奈 ン劇場版 い !!!!!!Luakatsu v3 12/03 ー 予定!!

3 日目 3/20

Page 12: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 13: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 内包表記

t1 = {i for i = 1, 5}-- {1, 2, 3, 4, 5}t2 = {i for i = 1, 10 when i % 2 == 0}-- {2, 4, 6, 8, 10}t3 = {k, v * 3 for k, v in pairs{x:1, y:2, z:3}}-- {x:3, y:6, z:9}

用い ー deep-copy 簡単

dc = (t) ->{k, (type(v) == "table" and (dc v) or v) for k, v in pairs t}

t = x: 1, y: 2, z: 3t_ = dc tt_.m = 4print t.m -- nilprint t_.m -- 4

4 日目 4/20

Page 14: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 内包表記

t1 = {i for i = 1, 5}-- {1, 2, 3, 4, 5}t2 = {i for i = 1, 10 when i % 2 == 0}-- {2, 4, 6, 8, 10}t3 = {k, v * 3 for k, v in pairs{x:1, y:2, z:3}}-- {x:3, y:6, z:9}

用い ー deep-copy 簡単

dc = (t) ->{k, (type(v) == "table" and (dc v) or v) for k, v in pairs t}

t = x: 1, y: 2, z: 3t_ = dc tt_.m = 4print t.m -- nilprint t_.m -- 4

4 日目 4/20

Page 15: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 16: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•REPL *5

MoonScript 作者 leafo氏 い REPL*2 改良 *3 改良一部 ー ン ン inspect ー *4 使い勝手 く い!

$ moor -hUsage: moonr [options]

-h print this message-n continue running REPL after "e" option completed-e STR execute string as MoonScript code-l LIB load library before run REPL-L LIB execute `LIB = require"LIB"` before run REPL

$ moormoor on MoonScript version 0.3.2 on Lua 5.3> string.split_t = (dlm) =>? [p for p in (@\match"#{dlm}$" and @ or @ .. dlm)\gmatch "(.-)#{dlm}"]?> "渋谷凛,島村卯月,本田未央"\split_t ","{ "渋谷凛", "島村卯月", "本田未央" }

*2 https://github.com/leafo/moonscript/wiki/Moonscriptrepl*3 https://luarocks.org/modules/steved/mooni/*4 https://github.com/kikito/inspect.lua/*5 https://github.com/Nymphium/moor/

5 日目 5/20

Page 17: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 18: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•Syntax Checker for MoonScript

Vim/Neovim 使 い 可能性 い 思い Syntastic*6

MoonScript ン ー 書い *7

• く

1. ソー Lua ン

2. Luacheck*8 通

3. moonc -X src.moon ソー 生成 Lua行 ー行 照 合わ ( い)

•実装

昔:

10倍速( )

今: MoonScript

*6 強力 ン ー ン https://github.com/scrooloose/syntastic/*7 http://github.com/nymphium/syntastic-moonscript/*8 http://luacheck.readthedocs.org/

6 日目 6/20

Page 19: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•Syntax Checker for MoonScript

Vim/Neovim 使 い 可能性 い 思い Syntastic*6

MoonScript ン ー 書い *7

• く1. ソー Lua ン

2. Luacheck*8 通

3. moonc -X src.moon ソー 生成 Lua行 ー行 照 合わ ( い)

•実装

昔:

10倍速( )

今: MoonScript

*6 強力 ン ー ン https://github.com/scrooloose/syntastic/*7 http://github.com/nymphium/syntastic-moonscript/*8 http://luacheck.readthedocs.org/

6 日目 6/20

Page 20: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•Syntax Checker for MoonScript

Vim/Neovim 使 い 可能性 い 思い Syntastic*6

MoonScript ン ー 書い *7

• く1. ソー Lua ン

2. Luacheck*8 通

3. moonc -X src.moon ソー 生成 Lua行 ー行 照 合わ ( い)

•実装昔: ⇒

10倍速( )

今: MoonScript

*6 強力 ン ー ン https://github.com/scrooloose/syntastic/*7 http://github.com/nymphium/syntastic-moonscript/*8 http://luacheck.readthedocs.org/

6 日目 6/20

Page 21: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•Syntax Checker for MoonScript

Vim/Neovim 使 い 可能性 い 思い Syntastic*6

MoonScript ン ー 書い *7

• く1. ソー Lua ン

2. Luacheck*8 通

3. moonc -X src.moon ソー 生成 Lua行 ー行 照 合わ ( い)

•実装昔: ⇒

10倍速( )

今: MoonScript

*6 強力 ン ー ン https://github.com/scrooloose/syntastic/*7 http://github.com/nymphium/syntastic-moonscript/*8 http://luacheck.readthedocs.org/

6 日目 6/20

Page 22: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•Syntax Checker for MoonScript

Vim/Neovim 使 い 可能性 い 思い Syntastic*6

MoonScript ン ー 書い *7

• く1. ソー Lua ン

2. Luacheck*8 通

3. moonc -X src.moon ソー 生成 Lua行 ー行 照 合わ ( い)

•実装昔: ⇒

10倍速( )

今: MoonScript

*6 強力 ン ー ン https://github.com/scrooloose/syntastic/*7 http://github.com/nymphium/syntastic-moonscript/*8 http://luacheck.readthedocs.org/

6 日目 6/20

Page 23: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 24: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

class Clsnew: (...) =>for i in *{...}table.insert @, i

__add: (l, r) ->#l + #r

__sub: (l, r) ->#l - #r

i1 = Cls 1, 2, 3, 4, 5i2 = Cls 6, 7, 8

print i1 - i2 -- 2

◮ 内部的 ー ー突 込 感

◮ new ソ ン

7 日目 7/20

Page 25: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 26: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•with構文

foo = (t) ->i = {}

if type(t) == "table"for p in *ttable.insert i, p

elsesetmetatable i, {t}

i -- return value

foo_with = (t) ->with i = {}if type(t) == "table"for p in *ttable.insert i, p

elsesetmetatable i, {t}

ン 中 変数名 ン ン 戻 値

8 日目 8/20

Page 27: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•with構文

foo = (t) ->i = {}

if type(t) == "table"for p in *ttable.insert i, p

elsesetmetatable i, {t}

i -- return value

⇒foo_with = (t) ->with i = {}if type(t) == "table"for p in *ttable.insert i, p

elsesetmetatable i, {t}

ン 中 変数名 ン ン 戻 値

8 日目 8/20

Page 28: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 29: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•LuaLATEX MoonScript

...\usepackage{luacode}\directlua{require 'lualoader'ms = require'moonscript.base'

function directmoon(str)return (ms.loadstring(str))()

end}...\begin{luacode*}-- サ ー 気 けlocal ok, cont = pcall(directmoon,[[for i = 1, 10tex.print i

tex.print "coinsLT #11"\match"(%S+)"]])

if ok thentex.print("\\\\ 〜 ")

elsetex.print("error: ", cont)

end\end{luacode*}

実行結果:1 2 3 4 5 6 7 8 9 10 coinsLT〜

非常 雑 い い 問題 (luacode*環境

い 使 い 逆 luacode*環境

LATEX ン 簡単 使 い 等)

9 日目 9/20

Page 30: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 31: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 書く? 1©

Vim いい けー ンソー Lua IDE ZeroBrane Studio*9 MoonScript用ン *10 導入 MoonScript ン ン書け 不安定 ンン落

editor.fontname = "Monaco"editor.fontsize = 13acandtip.droprest = trueacandtip.nodynwords = trueacandtip.startat = 2acandtip.startegy = 2autocomplete = true

*9 http://studio.zerobrane.com/*10https://github.com/pkulchenko/ZeroBranePackage/blob/master/moonscript.lua/

10 日目 10/20

Page 32: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 33: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 書く? 2©

Vim いい けHowl Editor*11 MoonScript 拡張 書け ! MoonScript 書け ! 一石二鳥!!

import config from howl

config.hungry_completion = true

howl.bindings.push {editor:shift_alt_c: 'editor-toggle-comment'

ctrl_f: 'open'alt_e: 'cursor-word-right'alt_w: 'cursor-word-left'alt_s: 'save'ctrl_w:ctrl_w: 'quit'

r: 'editor-redo'u: 'editor-undo'

}

howl.command.vi_on!

*11http://howl.io/11 日目 11/20

Page 34: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 35: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript-Lua ー ン問題

MoonScript Lua5.1ベー 開発 *12 ーサー Lua5.1 対応い いLua5.3上 MoonScript く

◮ __len ソ (v5.2〜)

◮ bit32 ー (v5.2〜)

◮ utf8 ー (v5.3〜)

い◮ >> <<演算子 (v5.3〜)

◮ __shl __shr ソ (v5.3〜)*13

◮ | &演算子 (v5.3〜)

◮ __bor __band ソ (v5.3〜)*10

◮ //演算子 (v5.3〜)

◮ __idiv ソ (v5.3〜)*10

◮ ~演算子 (v5.3〜)

*122015 12/02(commit ae2558ab67d8227b870cee1597a608c98727a924) 現在*13metatable 登録 対応 演算子 使 い

12 日目 12/20

Page 36: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 使い い …

◮ load !*14

strbin = (l, r, op) ->load("return #{l} #{op} #{r}")!

print(strbin(1, 10, "<<")) -- 1024

class T__shl: (r) =>table.insert @, r

t = T!strbin "t", 3, "<<"print(t[1]) -- 3

◮ require !require lua 読 Lua処理系 処理 く OK*15

-- shl.lua, calleereturn 1 << 10

-- moon file, callerprint require 'shl' -- 1024

*14文字列 load table い サン 変数名 文字列 渡 い*15 moon MoonScript 処理 ー 失敗

12 日目 13/20

Page 37: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 38: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

switch文 掴 書 易 増

str = "hogehoge"flag = true

switch strwhen "hogefuga"do_something!

when "hogehoge"if flagdo_somethinghoge!

str = "hogehoge"flag = true

switch strwhen "hogefuga"do_something!

when flag and "hogehoge" -- ソdo_somethinghoge!

生成 Lua MoonScript け ー わ

13 日目 14/20

Page 39: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 40: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•12/14 白樺 サ 誕生日 〜〜〜!!!!

!!!!〜〜〜154 話以降 観 〜〜〜

14 日目 15/20

Page 41: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 42: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 43: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•関数型言語 *19書い

untyped*16

p = \x \y \z + <x, + <y, z>>print (p 3 4 5)-- print 12double = \f \x f (f x)print (double (\x * <x, x>) 3)-- print 81

◮ parse eval repl合わ 223行 実装!

◮ 型 4 ! (number pair lambda nil(print関数 ))

◮ 関数 べ 一 値 引数 持 一 値 返◮ REPL い◮ if い *17 ー いけ 再帰関数◮ 数 書け *17

◮ 構文 少 い 初心者

Lua 関数 ン 書け LPeg*18 相性 良い! 最 !!

*16https://gist.github.com/Nymphium/48c909f622cb0f567c9e 型推論 講義中 思い い け 型 無い untyped*17実 if 文 作 い 初期関数 原始帰納 使 略 https://gist.github.com/yoshimuraYuu/a1370698ed533bbbdd8a*18http://www.inf.puc-rio.br/~roberto/lpeg/*19作者 関数型言語 言 関数型言語

16 日目 16/20

Page 44: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 45: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 46: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 47: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 48: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 49: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 50: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 51: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

• 切

Alt hoge 言語 話思 〜〜 !!!

時間 い (建前)

23 日目 17/20

Page 52: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 53: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•MoonScript

若い 育 い !

◮ GitHub上 開発 行わ い *20

◮ 数個見 け pr送 ( 個人的 初 )議論 末 ー

◮ ン ン く い 構文 issue !*21

◮ v0.32

*20http://github.com/leafo/moonscript/*21 GitHub 上 構文 関数 追加 多く議論 い

24 日目 18/20

Page 54: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

MoonScript Advent Calendar

自己紹介2日目3日目4日目5日目6日目7日目8日目9日目10日目11日目12日目

13日目14日目15日目16日目17日目18日目19日目20日目21日目22日目23日目24日目25日目

Page 55: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•明日 12/26 藤堂 様 誕生日 〜〜〜〜!!!!!

い !!!

ワン ー 誕生日順 見 !

$ moor -luakatsu -e 'for m = 1, 12 do for d = 1, 31 do ((x) -> x and print x.name, x.birthday) Aikatsu.find_birthday "%02d/%02d"\format m, d'

黒沢 凛 01/01大地 01/10神谷 01/11霧矢 い 01/31天羽 02/14星宮 い 03/15三 輪 03/28大空 04/01北大路 く 04/06姫里 04/18有栖川 05/05新条 06/11

夏樹 く 07/07紅林 珠璃 07/31紫吹 蘭 08/03栗栖 08/21藤原 09/14神崎 美月 09/18風沢 10/02氷上 10/20音城 11/11一 瀬 11/23冴草 い 12/03白樺 サ 12/14藤堂 12/26

25 日目 19/20

Page 56: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

•明日 12/26 藤堂 様 誕生日 〜〜〜〜!!!!!

い !!!ワン ー 誕生日順 見 !

$ moor -luakatsu -e 'for m = 1, 12 do for d = 1, 31 do ((x) -> x and print x.name, x.birthday) Aikatsu.find_birthday "%02d/%02d"\format m, d'

黒沢 凛 01/01大地 01/10神谷 01/11霧矢 い 01/31天羽 02/14星宮 い 03/15三 輪 03/28大空 04/01北大路 く 04/06姫里 04/18有栖川 05/05新条 06/11

夏樹 く 07/07紅林 珠璃 07/31紫吹 蘭 08/03栗栖 08/21藤原 09/14神崎 美月 09/18風沢 10/02氷上 10/20音城 11/11一 瀬 11/23冴草 い 12/03白樺 サ 12/14藤堂 12/26

25 日目 19/20

Page 57: MoonScript Advent Calendar - 3〜25日目MoonScriptAdventCalendar 自己紹介 2日目 3日目 4日目 5日目 6日目 7日目 8日目 9日目 10日目 11日目 12日目 13日目 14日目

coinsLT #10

MoonScript Advent Calendar

清聴 い

20/20