Your SlideShare is downloading. ×

Cleaner scala stack

1,821

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,821
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • というよくある理由
  • 因みに再帰で実装しました。
  • お菓子好きかい
  • eval は環境を受け取って返す
  • 1. エグゼキュートスタックから Intr を Pop する 2.StackVal だったらオペランドスタックにプッシュ 3.def 命令だったら辞書スタックに積む 4.exec などの命令だったら
  • どぼ
  • Transcript

    • 1. Cleaner が Scala で Stack 言語 を 書いてみて
    • 2.  
      • id:oskimura
      • アルゴリズム勉強会 ( たぶん ) 主催
      • スタート Clean 主催
      • 真実を述べる会
    • 3. Clean ってなに
      • スタート Clean
      •     ( 参考ページ )
      •     ( http://qiita.com/questions/72 )
      • ( 第二回 )
      •    スライド
    • 4. 動機
      • Scala を勉強したかった
      • Stack 言語でも書こう
    • 5. Stack 言語について
      • PostScript を参考
      • 3つのスタック
        • オペランドスタック
        • ディクショナリスタック
        • エグゼキュートスタック
      • Factorial を動かす事を目標
    • 6.  
      • みなさん
      • 脳内 JVM が
      • あるので
      • スタックマシンの
      • 説明は
      • なし
    • 7. 頭の中に JVM が !
      • お菓子好きかい?
    • 8. 設計方針
      • Clean っぽく書きたい
          • 代数的データ構造で命令を書きたい
        • パーサは Parsec 使いたい
        •   命令の実行は状態遷移マシンっぽくかきたい
    • 9. 設計 1
      •  
    • 10. 設計 2
      •  
    • 11. 設計 3(REPL)
      •  
    • 12. Instr( 命令 )
      • abstract  class Instr 
      • // オペランドスタック
      • case object Pop               extends Instr
      • case class Push(v:StackVal)   extends Instr
      • // 実行スタック
      • case object If                extends Instr
      • // 辞書スタック
      • case object Def               extends Instr
    • 13. Factorial
      • / fact { dup 1 eq  { dup 1 sub  / fact dynamic   exec mul } { pop 1 } ifelse }   def 
      • 10 / fact dynamic exec
    • 14.  
      • デモ
    • 15. 立ちはだかった
        • case クラスって…
        • Parsec のインターフェイスが独特
        • 共変、反変がよく分からない
        • emacs の flymake があんまり教えてくれない
        • コンパイルが遅い
        • トップレベルでの repl で前方参照してくれない (  相互再帰ェ )
    • 16. 解決法 ( ライフハック )
      • Scala を
      • dis っぽくにいえば
      • 水嶋さんが
      • 教えてくれる
    • 17.  
      • https://gist.github.com/1103812
    • 18.  
      •   _        ____     |  \      / _ _∧_∧ _\       |─   |========= ( ゚ д ゚ )  ̄ <桂ぁっ!今何キロ!?       ̄ ̄      □( ヽ┐ U                   ◎- >┘◎  キコキコ  ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    • 19.  
      •  

    ×