Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rubyistのための型入門

mzp
March 28, 2015

 Rubyistのための型入門

浜松Ruby会議01 http://regional.rubykaigi.org/hamamatsu01/ の発表資料です。

http://mzp.hatenablog.com/entry/2015/03/29/213909 もあわせてご覧ください。

mzp

March 28, 2015
Tweet

More Decks by mzp

Other Decks in Technology

Transcript

  1. ͦΕ͔Β10೥… • LLͰ࢓ࣄ͢Δͷ͸௝͍͠࿩Ͱ͸ͳ͘ͳͬͨ • Scala, Swift, F#, Go, TypeScript ͳͲ৽͍͠੩తܕ෇

    ͖ݴޠ΋ొ৔͍ͯ͠Δ • ੩తܕ෇͖ݴޠ͕ͳͥ໓ͼͳ͔ͬͨͷ͔ɻ • ౰࣌ͷඇ೉͕ؒҧͬͯͨ? • μϝͳ෦෼͕վળ͞Εͨ?
  2. จ๏͕৑௕ class Main { public static void main(String args[]) {

    System.out.println("Hello, world!!"); } } puts “Hello, world!!” Java Ruby
  3. ࠷ۙొ৔ͨ͠੩తܕ෇͖ݴޠ • Scala: JVM্Ͱಈ࡞͢Δݴޠɻ better Javaͱͯ͠࢖ͬ ͍ͯΔͱ͜Ζ΋ଟ͍ɻ • F#: .NET্Ͱಈ࡞͢Δؔ਺ܕݴޠɻOCamlʹେ͖ͳӨ

    ڹΛड͚͍ͯΔɻ • OCaml/Haskell: ؔ਺ܕݴޠɻ࠷ۙɺొ৔ͨ͠Θ͚Ͱ͸ ͳ͍͕ɺ࿩୊ʹͳΓ͕ͪɻ • ͦͷଞ: AltJSɺSwiftɺ….
  4. ௚ੵܕ • 2ͭҎ্ͷܕΛ૊ʹͨ͠ܕ def getPoint() : (Int, Int) = {

    (1, 2) } Scala def get_point [1, 2] # x࠲ඪͱy࠲ඪ end Ruby (Int, Int) Ͱɺ2ͭͷIntͷ஋ͷ ૊Λද͢ܕΛ࡞ΕΔ
  5. Rubyͬͯܕ͸͔ͭͳ͍ͷ? • RubyʹܕΛ͚ͭΔ͜ͱΛ໨తͱͨ͠ϓϩδΣΫτ ͕͋Δ • ྫ: Diamondback Ruby http://www.cs.umd.edu/projects/PL/druby/ class

    String ##% "+" : (String) -> String def +(p0); end ##% insert : (Fixnum, String) -> String def insert(p0, p1); end ... end