読者です 読者をやめる 読者になる 読者になる

2016年6月25日

日記

そんな大したコード書いてないのになんか上手く動かんなぁと思ってたら、前に spire 使っててハマった同じ罠にまたハマってた。

ジェネリックな数値型を使ってコード書いてるときに toRational とか toReal を呼び出すと無限ループになって StackOverflow 起こすんだよね。 spire 0.10, 0.11 では起こるけど、0.9 では起こらないので自分が書いてるコードには問題ないと思われる。 んで、ちょっと原因のコード見てみようかと spire の github リポジトリ見に言ったのだが、0.9 と 0.10 の間で scala.js に対応させるためにファイル移動させてて、どうやって移動前のファイルの履歴見ればいいのかわからんかったので断念。

書いてたコード自体は、spire のバージョンを 0.9 (バージョン2つ前)にしとくのもなんか嫌だったのだが、自前で暗黙のパラメータ(型クラス)使って数値型の変換をさせるコードも今イチうまく動かず悩ましいところ。 と思ってたら、パターンマッチングで各型(Int, Long など)のマッチングをハードコーディングすれば一応動くw ジェネリックアルゴリズムを書く目的でやってるのに本末転倒感があるけど、動かない部分はほんの一部なので充分許容範囲ではある。

ところで spire は2016年に対して更新されてないようだけど開発止まってるのかな。

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版


ツイート (ツイート数 28)