【Elixir】ESpec動いた!

漸く動いた(^^)/~ 使い方をググって見つかったコードはこれ。 GitHub - antonmi/espec: Elixir Behaviour Driven Development defmodule SyntaxExampleSpec do use ESpec it do: expect true |> to(be_true()) it do: expect(1 + 1).to eq(2) it do: (1..3) …

【Elixir】BDDな開発環境

Elixirのテスト関連ツールには ESpec と ExUnit があるらしい。 muziyoshiz.hatenablog.com これらを mix と組み合わせて使う方法を調べる。 Code of Resistance!!: [Elixir]ElixirでもBDDがしたい!! GitHub - antonmi/espec: Elixir Behaviour Driven Devel…

【自分メモ】今日の進捗

漸く haskell で stack + hspec を使って BDD な実装・テストをする環境を作れた。 (^^)一番参考になったページ Behavior-driven development (BDD) in Haskell with Hspec - Tutorials haslkell の開発環境で次にやりたいことは、IntelliJ IDEA Community E…

【Vim】小ネタ:短縮入力

HSpec の記述をするとき、shouldbe を毎回入力するのが面倒くさい(^^; 確か、Vim で楽に入力する技があったはず、とググった。 短縮入力 < 入力関連 < 初級編 | viエディタ入門 .vimrc に ab sb@ `shouldBe` と書いておく。で、編集入力中に sb@ と入力した…

【ToDo】ミニアプリ

プログラミング言語習得のため、基本文法の演習問題を解いた後どんな練習問題を解けば良いのか考えた。ウェブアプリケーションを作るというのが1つ。しかし、この場合はそれぞれのウェブアプリケーションフレームワークを使うことが前提となる。その前に、フ…

【Haskell】stack と HSpec

stack には HSpec 用のテンプレートがある。 どんなテンプレートがあるかは stack templates で確認できる。自分の環境では hspec - a testing framework for Haskell inspired by the Ruby library RSpec というのが含まれている。これを使ってプロジェクト…

【ソフトウェアテスト】xUnit と Spec系の比較

テスティングフレームワークについてググっていたら、どうやら2系統にわかれるっぽい。 xUnit SUnit(Smalltalk) に始まり、JUnit(Java)、GoogleTest(C++)、HUnit(Haskell), ScalaTest(Scala), ExUnt(Elixir) など。 自分は今までこちらしか使ったことがなか…

【ToDo】ソフトウェアテストの例題

組み合わせテストの例題 として、牛丼のメニューを考える。 牛丼 | 豚丼 頭の大盛り| 並み ご飯の大盛り | 並み つゆだく|つゆ抜き 味噌汁|豚汁 オプション:て生卵あり | なし サイドオーダーとしてのサラダ:ごぼうサラダ | ポテトサラダ | コールスロー…

【関数型言語】Haskell のテストツール

stack を使ってプロジェクトを作成すると、それだけで test ディレクトリが作成され、stack test するとテストが実行できる。いったい何をどうテストしているのか? stack new hello stack build stack test また、haskell で使えるテストツールとして HSpec…

【関数型言語】処理速度とメモリ使用量

処理速度 qiita.com 超大作。途中に各言語のベンチマークがある。 効率の面において、関数型言語はC++にはまったく歯が立ちません。C/C++は最速です C++には叶いませんが、JavaやC#、JavaScriptなどのメジャーな言語と同程度か、それより少し遅いくらいのパ…

【関数型言語】使いどころ

関数型言語の勉強中。関数型言語とはどういうものかを理解するのに四苦八苦。命令型言語と比べてどんな特徴があるのかと言う観点で学んでいる。しかし、本当に知りたいのは、どういう場合に関数型言語使うべきかということ。 ナップサック問題、サラリーマン…

【関数型言語】使いどころ

関数型言語の勉強中。関数型言語とはどういうものかを理解するのに四苦八苦。命令型言語と比べてどんな特徴があるのかと言う観点で学んでいる。しかし、本当に知りたいのは、どういう場合に関数型言語使うべきかということ。 ナップサック問題、サラリーマン…

【関数型言語】学ぶ目的・メリット

単なる好奇心ももちろんある。関数型言語って何ぞ? 実用的な観点として、次のようなもの 最近はプロセッサがマルチコアになり、またスケーラブルなシステムにするためにクラウド上にクラスタを作って動かすシステムが増えている。処理速度を上げるために、…

【関数型言語】継続渡し(CPS:Continuation-passing style)

計算途中の文脈(コンテキスト)を保存し、任意のタイミングで計算を途中から継続できるようにするしくみらしい。 ここで生じた疑問。 コンテキストとは具体的にはどのような内容なのか? OSのコンテキストスイッチの場合、 各種レジスタの内容 スタックの内…

【関数型言語】ファンクター(関手)

「すごいHaskell楽しく学ぼう!」 第11章「ファンクターからアプリカティブファンクターへ」 11.1 「帰ってきたファンクター」より。 ファンクターとは関数で写せるもののことです。 ファンクターの型クラスメソッドは一つだけで、それは fmap です。fmap の…

【関数型言語】Haskell と Scala の畳み込み関数

Scala とHaskell を比較しながら学んでいる。畳み込み関数について、全く違った表記があった。 Scala では foldLeft ではなく foldRight がスタックオーバーフローの危険がある。 Haskell では foldr ではなく foldl がスタックオーバーフローの危険がある。…

【関数型言語】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…

gibo と git-flow をインストールした

myuon.github.io という記事で、 gibo と git-flow を知った。あ、git-flow は以前にもググったことがあったが忘れていた。 gibo は .gitignore をプロジェクトごとに自動生成してくれるツール。各種言語に対応している。 対応言語は gibo -l で表示してくれ…

GitClaken を使ってみた

コマンドラインでは git clone でgithub に作ったリポジトリをローカルにクローン git add で、ローカルなリポジトリにファイルを追加。 git commit でバージョン管理の対象にし、コミットメッセージをつける git push でgithub のリポジトリにも反映 といっ…

【関数型言語】IDEのインストール

今までコマンドラインツールでコードを書いていたが、試しにIDEも使ってみることにした。 ググッて見ると、 scala, elixir, haskell の全てに対し、 IntelliJ Community Edition が対応していることがわかった。(^^) 最初に Windows10 に IntelliJ をインス…

【関数型言語】scala関連ツール

開発に必要なツール類をリストアップしてみる。 ビルドツール デバッガ テスティングフレームワーク モックライブラリ 統合開発環境 ビルドツール sbt 一択の模様。パッケージ管理、プロジェクト管理なども兼ねているみたい。 デバッガ 不明。調査が必要。 …

【関数型言語】勉強の進め方

[Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド](http://amzn.asia/1I1hIlZ) は、演習問題が多数あるのがとてもよい。 関数型言語を理解するのに、複数の言語を比較してみようと思う。 C++ Java Scala Haskell elixi…

【C++11】コレクションとスマートポインタ

標準ライブラリのスマートポインタには std::unique<T> と std::shared_ptr<T> がある。 また、コレクションには vector list map set などがある。コレクションに格納する型も 値(実体)T 参照 T& 生のポインタ T* と、上記2種類のスマートポインタがある。 コレ</t></t>…

GDBのシミュレータでエンディアンを確かめる

インテルのCPUはリトルエンディアン、ルネサスの SH や H8 はビッグエンディアン。 これをどうやったら確かめられるか考えた。GDBにはシミュレータ機能があることを思い出した。そこで、簡単なソースコードをシミュレータで動かし、メモリの内容を表示させて…

関数型言語のツール整理

関数型言語の各種ツールについて、整理する パッケージ管理 対話的実行環境 ビルド テスト Web Application Framework 対象言語は Haskell Elixir Scala Typescript また、関数型言語の特徴について、比較する。 カリー化 高階関数 部分適用 パターンマッチ…

関数型言語のツール整理

関数型言語の各種ツールについて、整理する パッケージ管理 対話的実行環境 ビルド テスト Web Application Framework 対象言語は Haskell Elixir Scala Typescript また、関数型言語の特徴について、比較する。 カリー化 高階関数 部分適用 パターンマッチ…