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

Function + Action = Program

Ichi
July 31, 2015

Function + Action = Program

(2015)

Ichi

July 31, 2015
Tweet

More Decks by Ichi

Other Decks in Science

Transcript

  1. www.pineapple.cc Function + Action = Interaction Ichiroh Kanaya*, Mayuko Kanazawa**,

    Masataka Imura*** *Graduate School of Engineering, Osaka University **Department of Image Arts, Kobe Design University ***School of Science and Technology, Kwansei Gakuin University
  2. www.pineapple.cc –Shiro Kawai The balance of integrity and flexibility is

    subtle but important. In our size of production, sometimes you need to allow one part of the production to work inconsistently with another, during a transition (and if things keep changing, it is always a transition period!) If you emphasize integrity and consistency too much, things cannot change in a timely manner. If you emphasize flexibility too much and allow people work their own way, you lose integrity. In my opinion, Lisp itself keeps a good balance between these, and fits well into this type of project.
  3. www.pineapple.cc Programmer 1 Programmer 2 Programmer 3 Code 1 Perl

    Code 2 Java Code 3 Visual Basic Domain Specific Language Phantom Query Language Foundation Common LISP Architect Not enough?
  4. www.pineapple.cc p(t) Clocktower Display Python/OpenGL Sensor C++/OpenCV Server Scheme {x(t),

    p(t)} t u(p) x(t)+y(u) t t Assets JPEG y(u) u t {x(t), p(t)} u(p) x: live video y: animation p: status t: current time u: animation time HTTP R.T. R.T. R.T.
  5. www.pineapple.cc data Maybe a = Nothing | Just a enum

    Optional<T> { case None case Some(T) }
  6. www.pineapple.cc ==> let f=fmap (+3) (+2) ==> f 10 15

    let f=map({$0+2}, {$0+3}) f(10) // 15
  7. www.pineapple.cc half x | even x = Just (x `div`

    2) | otherwise = Nothing func half(a: Int) -> Int? { return a%2==0 ? a/2 : .None }
  8. www.pineapple.cc p(t) Clocktower Display Python/OpenGL Sensor C++/OpenCV Server Scheme {x(t),

    p(t)} t u(p) x(t)+y(u) t t Assets JPEG y(u) u t {x(t), p(t)} u(p) x: live video y: animation p: status t: current time u: animation time HTTP R.T. R.T. R.T. Almost R.T.
  9. www.pineapple.cc Coherency of Dimensions (Types in Programming) Automatic Deduction of

    Data Type (like C++14, Haskell) Referential Transparency Action in Function (like Haskell) Linearity/Symmetry …Future Work