by shigemk2

当面は技術的なことしか書かない

Scalaの基本を副作用をまじえて

PDF P25 Listing 1.1 A Scala program with side effectsをちょっと翻訳してみた。

副作用とは何か、Scalaの基本が混じっている。

class Cafe { // classキーワードは、Javaのようなクラスを宣言します。その本体は波括弧{と}に含まれます。
  def buyCoffee(cc: CreditCard): Coffee = { // クラスのメソッドは、defキーワードによって導入されます。 cc: CreditCardは、CreditCard型のccという名前のパラメータを定義します。 buyCoffeeメソッドの戻り値はCoffee型で、パラメータリストの後に与えられ、メソッド本体は=記号の後に中括弧内のブロックで構成されています。
    val cup = new Coffee() // セミコロンは必要ありません。改行はブロック内の文を区切ります。
    cc.charge(cup.price) // 副作用です。実際にクレジットカードをチャージします。
    cup // returnを宣言する必要はありません。cupは、ブロックの最後の文であるので、それは自動的に返されます
  }
}

進捗どうですか? #ikebin

土日にグアムに行ってきました。

それはともかく、進捗です。

LOOPZ/LOOPE命令までやってました。

最初のmov命令をクリアしたらあとは数の問題かと思いきや、call命令で戸惑った。 IPの値を参照しながら逆アセンブルしないといけないので、ちょっとした実装の改造が必要。

その軌跡がこちら。

call命令 Direct within Segment 実装 · 5e7065c · shigemk2/8086_haskell · GitHub

コード

DisAsm201412162223.hs