深井裕二:関数型オブジェクト指向 AI プログラミング

作成日 : 2023-04-04
最終更新日:

概要

副題は Scala による人工知能の実装

警告

return 文

pp.44-45 のリスト 2-3 を実行すると、次の警告が出た。

PS C:\scala_ai> scala .\KnightsTour.scala
-- Warning: C:\scala_ai\KnightsTour.scala:13:23
13 |        if (rt != Nil) return rt // ルート探索成功、結果を返す
   |                       ^^^^^^^^^
   |Non local returns are no longer supported; use scala.util.control.NonLocalReturns instead
1 warning found

これについて調べてみても、私の知りたい情報は出てこない。Scala で return を使うのは、 作法としてあまりよろしくないということはいろいろな本に書いてあるが、 では既存のコードを return を使わずに書くにはどうすればよいか、私にはわからない。

pp.49-50 にあるリスト 3-1 を実行すると、次の警告が出た。

PS C:\scala_ai> scala .\MissionariesAndCannibals.scala
-- [E029] Pattern Match Exhaustivity Warning: C:\scala_ai\MissionariesAndCannibals.scala:18:27
18 |        val (dir, stNew) = st match { // 移動記録作成(方向, 新たな状態)
   |                           ^^
   |       match may not be exhaustive.
   |
   |       It would fail on pattern case: List(_*, _*, _, _*), List(_*), Nil
   |
   | longer explanation available when compiling with `-explain`
1 warning found

この警告(ウォーニング)は、場合分けを網羅していない、という意味なのだろう。では、どのようにすればこの警告が消えるのか、わからない。ウーム。

誤植

本書出版の時点では誤植ではなかったのかもしれないが、私が試した Scala の Ver.3 (3.2.2) では、この本の通りのコードではエラーが出た。 エラーが出ないように修正した一覧と思ってほしい。

場所備考
p.37 リスト 上から 9 行目def start() {def start() = {空行含む
p.37 リスト 下から 2 行目new Queens(8).startnew Queens(8).start()
p.42 リスト 上から 1 行目new Queens1(4).startnew Queens1(4).start()

書誌情報

書名関数型オブジェクト指向 AI プログラミング
著者深井裕二
発行日2015 年 11 月 2 日(初版)
発行者三恵社
定価2100 円(税別)
サイズ
ISBN978-4-86487-433-5
その他越谷市立図書館で借りて読む

まりんきょ学問所コンピュータの部屋コンピュータの本ニューロコンピューティング・人工知能 > 深井裕二:関数型オブジェクト指向 AI プログラミング


MARUYAMA Satosi