Slide 1

Slide 1 text

LZPO@NNLBPSJ@U@TQJDBʹ͓͚Δ தஔԋࢉࢠ ͷఆࣜԽʹ͍ͭͯ !N[Q

Slide 2

Slide 2 text

ϓϨθϯτ͸Կ͕͍͍ͩΖ͏ • ΍ͬͺΓීஈ࢖͑Δ΋ͷ͕͍͍Αͳ͊ • ͦ͏͍͑͹ɺҰ෦ͷPHPίϛϡχςΟʹ͸ɺ݁ࠗॕ ͍ʹίϯύΠϥύονΛଃΔ෩श͕͋ΔΒ͍͠[ཁ ग़ల] • OCamlͷίϯύΠϥύονΛଃΖ͏!

Slide 3

Slide 3 text

͜Ε͕Ͱ͖ΔΑ͏ʹ͢Δ let kyon_mm = …… let kaori_t_spica = …… kyon_mm ❤️ kaori_t_spica // => “Happy Wedding!!”

Slide 4

Slide 4 text

0$BNMͷίϯύΠϥͷվ଄ྫ • opam(OCaml PAckage Manager)͸ύοέʔδ ͷΠϯετʔϧҎ֎ʹ΋ίϯύΠϥͷ੾Γସ͕͑Ͱ ͖Δ • opam switch —allͰίϯύΠϥҰཡΛݟͯΈ· ͠ΐ͏ ࢀߟIUUQPQBNPDBNMQSPDPN

Slide 5

Slide 5 text

ެࣜϦϦʔε • 4.01.0: Official 4.01.0 release • 3.11.2: Official 3.11.2 release • 3.12.1: Official 3.12.1 release • 4.00.0: Official 4.00.0 release • 4.00.1: Official 4.00.1 release • 4.01.0beta1: Beta1 release of 4.01.0

Slide 6

Slide 6 text

USVOLͳίϯύΠϥͨͪ • 4.01.0dev+trunk: latest snapshot of the 4.1 branch • 4.02.0dev+trunk: latest trunk snapshot

Slide 7

Slide 7 text

USVOLύον • 4.02.0dev+pr10: Add String.{split,rsplit} • 4.02.0dev+pr13: Add String.{cut,rcut}. • 4.02.0dev+pr14: Add absolute directory names to bytecode format for ocamldebug to use • 4.02.0dev+pr15: replace String.blit by String.unsafe_blit • 4.02.0dev+pr17: Cmm arithmetic optimisations • 4.02.0dev+pr18: Patch for issue 5584 • 4.02.0dev+pr2: Parse -.x**2. (unary -.) as -.(x**2.). Fix PR#3414 • 4.02.0dev+pr20: OCamlbuild: Fix the check of ocamlfind • 4.02.0dev+pr22: Add Ephemerons to OCaml • and more

Slide 8

Slide 8 text

ͦͷଞͷΑ͘ΘΒͳౕ͍ • 4.00.0+fpɿ Runtime with frame-pointers (improved GDB & perf usage) • 4.00.1+BERɿ BER MetaOCaml (http://okmij.org/ftp/ML/MetaOCaml.html) • 4.00.1+alloc-profiling: support allocation profiling on x86_64 • 4.00.1+annot: Enable -binannot by default • 4.00.1+french: French translation of error messages • 4.00.1+mirage-unix: Mirage compiler for unix • 4.00.1+mirage-xen: Mirage compiler for xen • 4.00.1+open-types: add open extensible types to OCaml • 4.00.1+raspberrypi: Native backend for Raspberry-PI • 4.00.1+short-types: Better heuristic to display long type names • 4.01.0+jocaml: Official 4.01.0 release of JoCaml, that is, OCaml extended for concurrent and distributed programming.

Slide 9

Slide 9 text

஫ҙ఺ϥΠηϯεʹ͍ͭͯ :PVNBZNBLFNPEJpDBUJPOTUPUIF4PGUXBSFBOE EJTUSJCVUFZPVSNPEJpDBUJPOT JOBGPSNUIBUJT TFQBSBUFGSPNUIF4PGUXBSF TVDIBTQBUDIFT5IF GPMMPXJOHSFTUSJDUJPOTBQQMZUPNPEJpDBUJPOT ࢀߟIUUQDBNMJOSJBGSPDBNMMJDFOTFFOIUNM ίϯύΠϥΛվ଄ͯ͠΋͍͍͚Ͳɺͦͷ··ެ։ͨ͠Β μϝͩΑɻύονͳΒ0,ɻ ݪจ ҙ༁

Slide 10

Slide 10 text

ੲͷվ଄ํ๏ 0$BNM.FFUJOHJO5PLZPʮେ᱈᱃ղ᪼Ꮣ଄֓આ3JEFZPVSPXO0$BNM2VJDL0$BNM.PE)PXUPʯ IUUQPDBNMKQ6TFST.FFUJOH

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

໰୊఺ • ຖճɺίϯύΠϥͷେ൒ΛϦϏϧυ͢ΔͷͰ஗͍ • ެ։͢ΔͨͼʹύονΛ࡞Βͳ͍ͱ͍͚ͳ͍ͷͰ໘ ౗ • ࢖͏ʹ͸ύονΛద༻͠ͳ͍ͱ͍͚ͳ͍ͷͰ໘౗

Slide 13

Slide 13 text

ΠϚυΩͳվ଄ํ๏ • 4.00Ҏ߱͸compiler-libs͕ಋೖ͞Εͨɻ • ίϯύΠϥΛߏ੒͢Δ֤Ϟδϡʔϧ(ύʔαɺܕਪ ࿦ثɺίʔυδΣωϨʔλ౳)͕ඪ४ϥΠϒϥϦʹ ͳ͍ͬͯΔɻ • ඪ४ϥΠϒϥϦʹͳ͍ͬͯΔͷͰɺOCaml͕࢖͑Ε ͹Ͳ͜Ͱ΋࢖͑Δɻ ࢀߟIUUQTCJUCVDLFUPSHDBNMTQPUUFSDPNQJMFSMJCTIBDL

Slide 14

Slide 14 text

DPNQJMFSMJCTΛ༻͍ͨվ଄ • վ଄͍ͨ͠Ϟδϡʔϧ͚ͩΛஔ͖׵͑Δ • ύονͰͳ͍ͷͰ഑෍ɾར༻ָ͕ ύʔα ܕਪ࿦ ίʔυ ੜ੒ ίϯύΠϥϑϩʔ υϥΠό DPNQJMFSMJCT ύʔα վ ίϯύΠϥϑϩʔ վ υϥΠόվ

Slide 15

Slide 15 text

վ଄ํ਑ • ϨΩαʔΛஔ͖׵͑ͯ❤️ΛதஔԋࢉࢠͷτʔΫϯͱ ͯ͠࢖͑ΔΑ͏ʹ͢Δ • ❤️ͷఆٛ͸ϓϩάϥϜΛ࢖͏ଆͰ༩͑ΔΑ͏ʹ͢Δ

Slide 16

Slide 16 text

MFYFSNMMͷมߋ఺ ൈਮ rule token = parse (snip) | "!=" { INFIXOP0 "!=" } | "+" { PLUS } | "+." { PLUSDOT } | "-" { MINUS } | "-." { MINUSDOT } | "♥" { INFIXOP4("♥") } | "❤️" { INFIXOP4("♥") } (snip)

Slide 17

Slide 17 text

σϞ let (❤️) _ _ = "Happy Wedding!!" ! let message = `kyon_mm ❤️ `kaori_t_spica ! let () = print_endline message

Slide 18

Slide 18 text

஫ҙ఺ • Ѫͷҙຯ͸ఆٛ͞Ε͍ͯ·ͤΜɻར༻ऀଆͰద੾ͳ ҙຯΛఆ͍ٛͯͩ͠͞ɻ • ԋࢉࢠ͸ӈ݁߹Ͱ͢ɻଞͷ૬खʹऔΒΕͳ͍Α͏ʹ ͝஫ҙ͍ͩ͘͞ɻ • ྫ: `a ❤️ `b❤️ `c= (`a ❤️ `b) ❤️ `c

Slide 19

Slide 19 text

ࢀߟυΩϡϝϯτ • https://bitbucket.org/camlspotter/ compiler-libs-hack • https://github.com/mzp/ kyon_kao_wedding

Slide 20

Slide 20 text

ผղ let (+++) _ _ = "Happy Wedding!!" let message = `kyon_mm ❤️ `kaori_t_spica $ ocamlc -pp ‘sed s/❤️/+++/‘ foo.ml

Slide 21

Slide 21 text

·ͱΊ • OCamlͷίϯύΠϥΛվ଄͢Δͱͨͷ͍͠ • compiler-libsͷ͓͔͛Ͱؾܰʹվ଄ɾެ։Ͱ͖ Δ • ͋͞ɺΈͳ͞Μ΋΍Γ·͠ΐ͏!