SlideShare a Scribd company logo
Cleaner が Scala で Stack 言語 を 書いてみて
自己紹介 id:oskimura アルゴリズム勉強会 主催 スタート Clean 主催
Clean ってなに スタート Clean 参考ページ http://qiita.com/questions/72 第二回 スライド
動機 Scala を勉強したかった ⇓ Stack 言語でも書こう
Stack 言語について PostScript を参考 3つのスタック オペランドスタック ディクショナリスタック エグゼキュートスタック Factorial を動かす事を目標
  みなさん 脳内 JVM が あるので スタックマシンの 説明は なし
設計方針 Clean っぽく書きたい 代数的データ構造で命令を書きたい パーサは Parsec 使いたい   命令の実行は状態遷移マシンっぽくかきたい
設計 1  
設計 2  
設計 3(REPL)  
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
Factorial / fact  { dup 1 eq   { dup 1 sub  / fact  dynamic   exec  mul } { pop 1 } ifelse }   def   10 / fact  dynamic  exec
  デモ
立ちはだかった case クラスって… Parsec のインターフェイスが独特 共変、反変がよく分からない emacs の flymake があんまり教えてくれない コンパイルが遅い トップレベルでの repl で前方参照してくれない (  相互再帰ェ )
解決法 ( ライフハック ) Scala を dis っぽくにいえば 水嶋さんが 教えてくれる
  https://gist.github.com/1103812

More Related Content

PPT
Cleaner scala stack
PPTX
ぼくがAthenaで死ぬまで
PPT
Google Perf Tools (tcmalloc) の使い方
ODP
scryptos onsite(plaid CTF)
PDF
xv6から始めるSPIN入門
PPTX
勉強会 - 2
PPT
Clojure+Leiningenで3分Hadoop
PPT
ICT presentation!
Cleaner scala stack
ぼくがAthenaで死ぬまで
Google Perf Tools (tcmalloc) の使い方
scryptos onsite(plaid CTF)
xv6から始めるSPIN入門
勉強会 - 2
Clojure+Leiningenで3分Hadoop
ICT presentation!

Similar to Cleaner Scala Stack (会社ブログ用) (20)

PPT
Scala Daysに行ってみて
PDF
JJUG CCC 2014 ATL
PDF
ATN No.2 Scala事始め
PDF
Survey of Apache Spark
PPTX
Scalamacrosについて
PDF
TypeScript 言語処理系ことはじめ
ODP
Scala東北紹介
ODP
Racc でおてがる構文解析
PDF
並行処理初心者のためのAkka入門
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
PDF
Scala勉強会_2014_11_18
PDF
Scala EE 7 Essentials
PDF
MoteMote Compiler Plugin
PPT
Rpscala2011 0601
PDF
言語アップデート -Scala編-
PPTX
Apache Spark チュートリアル
PPTX
演習:プログラミング言語処理をやってみよう
PDF
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
PDF
JAWSDAYS 2014 ACEに聞け! EMR編
PPTX
Akkaの翻訳みんなでやろう Let's translate akka doc
Scala Daysに行ってみて
JJUG CCC 2014 ATL
ATN No.2 Scala事始め
Survey of Apache Spark
Scalamacrosについて
TypeScript 言語処理系ことはじめ
Scala東北紹介
Racc でおてがる構文解析
並行処理初心者のためのAkka入門
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Scala勉強会_2014_11_18
Scala EE 7 Essentials
MoteMote Compiler Plugin
Rpscala2011 0601
言語アップデート -Scala編-
Apache Spark チュートリアル
演習:プログラミング言語処理をやってみよう
Custom Scan API - PostgreSQL Unconference #3 (18-Jan-2014)
JAWSDAYS 2014 ACEに聞け! EMR編
Akkaの翻訳みんなでやろう Let's translate akka doc
Ad

Cleaner Scala Stack (会社ブログ用)

Editor's Notes

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