jupyter-scalaでのimport

結論 使いたいライブラリは使いたいサーバでsbt publishLocalしておく 例えばbreezeを使いたいなら,import $ivy.`org.scalanlp::breeze:0.13.1`のようにimportする 背景 そろそろ実際に使えるコードを書いてみようと思ったところ, あまりにもわからないこ…

「Scalaスケーラブルプログラミング」9章

理解 higher order functions : 関数を引数とする関数 により,手続きの抽象化が簡単にできる カリー化: 第一引数を与えたもとで,第二引数のみを引数とする関数を定義する により, 第一引数: 普通の変数, 第二引数: 処理(関数)が, function (引数) {処理}…

「Scalaスケーラブルプログラミング」8章

理解 privateメソッド: 他のクラスの名前空間をメソッドと同様に,メソッド内に関数を定義することで,他のメソッドの名前空間を汚さない そうすることで,関数内の変数を使えるというメリット(関数がより単純になる)もある First-class functions: 変数のよ…

「Scalaスケーラブルプログラミング」7章

所感 理解 PythonのIF式で値を返す用法はScalaにもあり,varを使わない,副作用として書かないという意味で望ましいやり方 whileはvarを前提として,値を返さない命令型の構文であり,望ましくない 再帰で書けないか検討する for は yieldで返す値を定義,結…

「Scalaスケーラブルプログラミング」6章

所感 理解 immutableの欠点は,多数のデータを持つオブジェクトで一部の値の更新が頻繁にある場合. 更新のコードが煩雑になるし性能上の問題にもなりうる. すべてのクラスは,デフォルトでjava.lang.Objectクラスを継承している 事前条件を明記しチェック…

「Scalaスケーラブルプログラミング」5章

所感 理解 ほぼ書き方の話なので読めばわかるかなと 型変換して適用しなければならないように思える演算子も,自動的に適用できるようになっている. implicit conversionsとrich wrapperによる. 補足 ==はすべてのオブジェクトに適用される,しかし当然で…

「Scalaスケーラブルプログラミング」4章

所感 理解 クラス内変数,メソッドにはself.とかなくアクセスできる メソッド メソッド引数は全てvalなので更新は不可 returnを省略すると一番最後に計算された値を返す 宣言の仕方についてhttp://docs.scala-lang.org/style/declarations.html#methods 返り…

「Scalaスケーラブルプログラミング」3章

所感 理解 Arrayの要素取り出しは[]ではなく() X(Y)はX.apply(Y)の省略形 X(Y) = ZはX.update(Y, Z)と同値 演算子はない.メソッドである..や()なしでも引数が一つならば演算子のように書かれる Arrayが変更可能,Listが変更不可能 普通は左のオブジェクト…

「Scalaスケーラブルプログラミング」2章

所感 納得した点 関数定義で,引数は型が必須,返り値は任意というのは納得. 関数間の不整合は必ずチェック,関数内での不整合は任意. def f(X) = {Y}の関数定義と(X) => Yの関数定義,後者はその場限り なので型を省略してもよいが,前者はだめ. 関数型…

「Scalaスケーラブルプログラミング」1章

所感 Scalaの長所や狙いについて,概念はわかるが本質を実感できているのは半分もないと思う. でもそんなものと思ってまずは読み進める. 共感する点 並列計算で問題が起こらないように制約を課すというアプローチ 副作用禁止 簡潔性: 制約を課してエラーが…

設定

PythonユーザがScalaを学習 以下で構築した環境でテストする github.com 教科書は以下を利用.ずいぶん昔に買って放っておいたものを今更読むので,初版のもの. https://www.amazon.co.jp/Scala%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9%E3%83%96%E3%83%AB%E3%…