scalacheckのcommandsパッケージをPersimmon.Driedに移植

ちったーを眺めていたら

というつぶやきが見え、そういえば干し柿にはまだ移植してなかったなーと気が付いたので、休日を使って実装してみました。

参考資料

http://scalacheck.org/files/scaladays2014/#1

これ読めばわかるはず。

干し柿での実装

https://github.com/persimmon-projects/Persimmon.Dried/blob/6904f9bca60647ef26a51fe5d9b150be55f90e31/src/Persimmon.Dried/Commands.fs

他に方法が思いつかなかったので、クラスベースの実装になっています。

あと、Scala

trait Command {

  ...

  type Result

  ...

のような芸当はできないので、型パラメータで代用してます。 で、これと StructuredFormatDisplay 属性がオブジェクト式に対して働いてくれない(?)影響で BoxedCommad という残念な型が一つできたわけです…。

実行速度は今のところ遅いです。 一部さぼっているところ*1を修正したら少しはマシになるかもしれませんが、体感はそんなにかわないのではないでしょうか。

Redis のサンプルはそのうち移植したいところですね。

おわりに

機能は充実してきた干し柿さん、いったいどこへ向かうやら…まぁ、その前に Arbitrary インスタンスを増やさないといけないのですががが。

あと Persimmon 本体の進捗はありません、すみません…orz

*1:主にList.revして~してList.revする、というさぼり