2018-01-02から1日間の記事一覧

【関数型言語】IntelliJ での fpinscala の練習問題を解く環境

演習問題をビルド・実行する環境をどうしたものかと思っていた。演習問題以外のソースコード(テキストに載っている List や Option など)を打ち込まないとビルドできないからだ。だが、いいページを見つけた。感謝。 qiita.com ubuntu でも問題なく下記の…

【関数型言語】名前渡し(call by name) と必要渡し(call bye need)

Scala 関数型デザイン&プログラミング http://amzn.asia/bIfSCQS の「第5章 正格と遅延」に Scalaの非正格かんすうは引数を値渡しではなく名前渡しでうけとります。 という記述があった。「名前渡し」は初めて聞いたので、ぐぐった。 引数の値渡しと名前渡…

【関数型言語】例外を使わないエラー処理

Scala では Option/ Either型を使う。 Hakell だと Maybe/Eitherモナドを使うらしい。 C++17だと optional - cpprefjp C++日本語リファレンス javascript だとMaybe/ Eitherモナド。 elixir:通常はタプルを返すが、Option/Either と同等?要調査。 ==> elix…

【関数型言語】promiseとかfutureとか

恥ずかしながら、今日初めて promise とか future を知った(汗 postd.cc qiita.com okapies.hateblo.jp 非同期処理を行うための機能らしい。今どきの言語は大抵持っているとか(大汗 Scala Java Javascript C++ Haskell と elixir については、該当機能があ…

【関数型言語】CPS(継続渡し)と末尾再帰最適化

ループと再帰 関数型言語ではループを再帰で表す(ことがおおい)らしい。だが、再帰はスタックオーバーフローする危険がある。それを避けるには、末尾再帰最適化をすればよい。これを使うと、再帰呼び出しにもかかわらず、スタックを消費しない。 scala, ha…