Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Functional Music Composition

768 views

Published on

LT at OedoRubyKaigi05 2015.11.8
http://rubygems.org/gems/razyk
http://github.com/nagachika/razyk

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Functional Music Composition

  1. 1. Functional Music COMPOSITION @nagachika 2015.11.8 大江戸Ruby会議05
  2. 2. Theme - Ruby New Feature - Functional Programming - Audio Programming
  3. 3. Theme - Ruby New Feature - Functional Programming - Audio Programming
  4. 4. Functional Programming Language
  5. 5. Haskell?
  6. 6. Erlang?
  7. 7. OCaml?
  8. 8. Scala?
  9. 9. LazyK!!
  10. 10. LazyK - Purely Functional - Stream based I/O - SKI Combinator Calculus
  11. 11. Fukuoka.rb 読書会
  12. 12. Understanding Computation
  13. 13. Understanding Computation
  14. 14. SKI Combinator Calculus - I x = x - K x y = x - S x y z = (x z) (y z)
  15. 15. Hello, World! (LazyK) (K(S(SI(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I)) (S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K)) (S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K))(S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I)) (S(KI)I)))I)))I)))I))))(S(KI)I))))(K(S(SI(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I))) (S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I))) (S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K)) (S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))) (S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(KI)I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K)) (S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I))))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I))))(K(S(SI(K(S(K(S(S(KS)K)I)) (S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K)) (S(K((S(S(KS)K))(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I))))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I)) (S(KI)I)))I)))I))))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(KI)I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(K((S(S(KS)K))(S(S(KS)K)I))) (S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I))))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I))) (S(KI)I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I)) (S(KI)I)))I)))I))))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(S(KS)K)I))) (S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I)))) (K(S(SI(K(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K))(S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I))) (S(K((S(S(KS)K))(S(S(KS)K)I)I)))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I))))(K(S(SI(K(S(K((S(S(KS)K))(S(K(S(S(KS)(S(KK) (S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K))(S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I))))(S(K(S(K((S(S(KS)K))(S(S(KS)K)I)))(S(KI)I)))I)))) (K(S(SI(K(S(K(S(S(KS)(S(KK)(S(K(S(S(KS)K)I))I)))(S(K((S(S(KS)K))(S(S(KS)K)I)))I)))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))) (K(S(SI(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I)) (S(K(S(K(S(S(KS)K)I))(S(K(S(K(S(S(KS)K)I))(S(KI)I)))I)))I)))I)))I)))I)))I)))I))))(KI)))))))))))))))))))))))))))))))
  16. 16. RazyK LazyK Interpreter implemented by pure Ruby https://rubygems.org/gems/razyk
  17. 17. RazyK
  18. 18. RazyK 5年前
  19. 19. Inspired by
  20. 20. Inspired by http://tatsu-zine.com/books/esoteric-language-programing-in-ruby 復刻版 <3<3
  21. 21. RazyK • dump reduction steps • Browser Interface • Step by Step Reduction • Visualize Combinator Calculus
  22. 22. RazyK (Browser Interface)
  23. 23. RazyK (Spoiler) • Integer Literal ($0, $1, $2..) • String Literal ( Hello, World!n )
  24. 24. Hello, World (RazyK) $ razyk -e K Hello, World!n Hello, World!
  25. 25. String Literal 最高!!
  26. 26. mame 日本屈指の変態的プログラマ
 (ほめ言葉) 日本で一番すごい実用的じゃ ないプログラムを書いてる人
  27. 27. 「もっとやれ」 ということか…
  28. 28. RazyK Version 0.2.0 Released! • Renew Browder Interface • Eliminate graphviz dependency • Less spoiler • Add Audio Stream Mode!!
  29. 29. DEMO $ razyk --audio examples/air_on_the_g_string.lazy
  30. 30. Functional Music COMPOSITION
  31. 31. Functional Music COMPOSITIONPlayer

×