mike-neckのブログ

Java or Groovy or Swift or Golang

2015-01-01から1年間の記事一覧

やっとこさ、JSONをパースするHaskellのコードほぼ完成した

以前、書いた記事でJSONの数値型のパーサーが書けなくて、悩んでたやつ、なんとか汚いながらも動く奴が書けた。 これが以前のやつ HaskellでJSONのパーサーを書いてみた - mike-neckのブログmike-neck.hatenadiary.com JSONの数値型のパーサー部分が書けなか…

Haskellで基本的なことをhspecで確認してみる

上記のとおりです。 『すごいH』本を読みながら、リストだとかMaybeだとかEitherだとかがFunctor、Applicativeなどを満たしていることを各法則を試すことによって確認しています。 具体的な課題はこんな感じ 課題 次の型がそれぞれ下に列挙された型クラスの…

hspecを使ってcabalでテストしてみた

Haskellのhspecについて、まあ、すでにやっている人はやっているだろうし、今更感が否めない記事です。僕のスキルの低さではなかなかレベルが高くて辛かったのでメモになっています。なお、本記事のほぼ全部の部分については以下のエントリーを参考にしてい…

『すごいHaskellたのしく学ぼう』を読んだ

表記のとおりです。 1ヶ月くらいかかっちゃいました。 Amazon.co.jp: すごいHaskellたのしく学ぼう!: Miran Lipovača, 田中 英行, 村主 崇行: 本amazon.co.jp 内容的にはAmazonのカスタマーレビューが詳しいですが、自分なりに書くとこんな感じです。 Funct…

HaskellでJSONのパーサーを書いてみた

POSTDというサイトに次のようなエントリーがあった。 Haskellで生産性を高める-Pythonからの移行 | プログラミング | POSTDpostd.cc で、この記事の中でParsecライブラリーの紹介としてJSONパーサーを作るという動画が紹介されていた。 www.youtube.com Hask…

僕のインスタンスを複数欲しいと思った件

誰しもが思ったことのあるSFチックな話 自分のインスタンスが複数ほしい。で、時折その知識・経験を同期して欲しい 某社でそれを口にした所、話が膨れてこんな感じになった。 同期するために、その経験を得るまでに要した時間を必要とする 例えば、5人分のイ…

LTS-Haskell-Initを少し修正した

以前書いたgradleでhaskellの開発環境を整えるやつ mike-neck/LTS-Haskell-Initgithub.com gradleでLTS Haskellのテンプレートを作るやつ作った - mike-neckのブログmike-neck.hatenadiary.com を久々に起動したら、stackageのsnapshotsのパス構成が変わって…

大学生が学習塾講師のアルバイトをしてはいけない理由

これはネタエントリーですが、僕の過去の学習塾でのアルバイト経験に基づき記述しています。 大学生が学習塾で講師をやるというのはよくある話です。 大体の場合は、講師の募集内容で時給2,100円程度で募集されているので、結構割がよいと勘違いして申し込む…

第三回かわいいKotlin勉強会に行ってきた #jkug

表題の通りKotlinの勉強会に行ってきました。 第3回 かわいいKotlin勉強会 #jkugkotlin.doorkeeper.jp ただ、参加しようと思ったらすでに満員だったので、参加する方法ないかどうか思案していたら、発表者枠が空いていたので、発表者枠で参加しました。Kotli…

#渋谷Java に行ってきた

表題のとおりです。 第十一回 #渋谷java (2015/05/30 14:00〜)shibuya-java.connpass.com で、発表してきました。 On stream-lazy-computation from mike_neck Mochida www.slideshare.net 実際のプレゼンの内容はもう少し丁寧かつ雑な資料でやりました。 Ja…

JJUG ナイトセミナー 「GS Collections 道場」行ってきた #jjug

表記のとおりです。なお、本文はハンズオンの片手間で書いています。 【東京】JJUG ナイトセミナー 「GS Collections 道場」jjug.doorkeeper.jp 勉強会の内容的には手を動かしている時間が長かったので、ツイートは少なめなので、多分トゥゲッターはないと思…

Scalaのimplicit parameterとHaskellのType class(雑)

Scalaのcatsというライブラリーのドキュメント読んでて、Haskellじゃんなんて思ってました。 Cats Documentation - Typeclasses で、若干気になったことがありまして、Javaの立場でScalaのimplicit parameterを見ていて、なんか怪しげな感じのする関数だなー…

『すごいHaskell』第6章メモ

このようなリストに対する標準的な再帰パターンでは、再帰を明示的に書くよりも、畳込みを使うほうがよいでしょう。そのほうが読みやすく理解しやすいからです。foldrの呼び出しは誰が見ても畳み込みですが、明示的な再帰を読むには考える時間が必要です。 …

Streamパイプラインを1つ生成するのに必要なメモリを求めてみる

元になった記事はこれ。 Java 8 Streamの挙動を調べたった - mike-neckのブログmike-neck.hatenadiary.com パイプライン一つ一つがリンクドリスト状のStreamのインスタンスで構成されているということで、どれくらいの長さのストリームパイプラインを書くとO…

『すごいHaskellたのしく学ぼう!』読書メモ〜4章

第四章 再帰が重要な理由 問題を大きな問題からより小さな問題に分解する これ以上分けられない基底部まで分解する 基底部では解を明示的に定義する 大きな問題は関数を自分自身に再帰的に適用することで部分問題を再帰的に解いていく 最終的に解を部分的な…

gradleでLTS Haskellのテンプレートを作るやつ作った

何を言っているかわからないタイトルですね。でも字面通りなのです。 StackageのLTS Haskell便利なのですが、更新頻度が週1回くらいあって、次のQiitaの手順を行うのが面倒なので、なんとかしたかったのですが、あまりにシェルちからなさすぎてgradleでやる…

gradle2.4のRule based model configurationがユーザーにとって地味に嬉しい

gradle2.4のリリースノートを先日眺めていたらRule based model configuration improvementsという記述があって、そのユーザーガイドのコードを試してみました。 モデル モデル(POJO)をあらわすインターフェース。Managedアノテーションを付与することによっ…

『ふつうのHaskellプログラミング』読み終わった

表記のとおりです。 一応、簡単なHaskellのプログラムは書けるかもしれないような気がするようになりました。 第一部のあたりは具体的にプログラムを書きつつ遊ぶことができるので、それなりに身につく感じがします。ただ、内容的には深堀りはしていないので…

エンジニアで定期的に話題になるやつ

あまり思いつかないけどまとめてみた DBの論理削除 勉強会キャンセル この言語、これこれができないからクソ→それぞれの言語コミュニティでの戦争勃発 ○○を採用すべき10の理由 メールでパスワードつきzipと一緒に平文でパスワードが送られてくる(2015/05/15 …

『ふつうのHaskell』第10章〜第11章

第10章 エンティティ 変数 型コンストラクタ データコンストラクタ フィールドラベル 型クラス クラスメソッド モジュール定義 基本的な形 module Repository where 特定のエンティティのみエクスポートする module Repository (findById, save) where デー…

Javaでできることが云々

あまり火に油を注ぐようなことはしたくないし、議論されていることの内容が僕の頭で理解できるレベルを超えているので、あまり書きたくはないけど、まあ雑感という感じで。 「ScalaでできることJavaでできること以上のことはできない」的なツイートの後、ま…

『ふつうのHaskell』第九章

単なる読書メモ 代数的データ型 定義の仕方1 - 構造体っぽい ラベルなしコンストラクター -- Student型の定義 data Student = Student String String -- インスタンス化 student = Student "Paul" "Smith" -- パターンマッチ printStudent:: Student -> IO()…

ふつうのHaskell 8章

単なる読書メモ 無名関数 書き方 \n -> n * n 使い方 map (\n -> n * n) [1,2,3,4] 関数合成 書き方 before lineCount:: String -> Int lineCount s = length $ lines s after lineCount:: String -> Int lineCount = length . lines 部分適用 例:5の倍数を…

Java 8 Streamの挙動を調べたった

表記の件について、JavaのListから作るStreamは操作中に変更をするとその後の挙動についてなんら結果を保証しないので、ListからStreamを作った場合は、変更をしないか、あるいは不可変なListに変換してから作るのが良いです。 と、書いておいてからなのです…

『データベース実践入門』読んだ

表記のとおりです。 この本全体として リレーショナルモデルの徹底・限界 NULLの撲滅 矛盾をとにかく避けること というテーマが一貫されている本だった。 リレーショナルモデルの徹底というのは、結局のところ矛盾を避けることなのだが… その中で、実際のア…

Javaラムダで竹内関数を書こう

『ふつうのHaskell』を読んでて竹内関数というのが出てきたので、それをJavaでやってみようと思った。 ちなみに竹内関数とは 竹内関数(たけうちかんすう)は、プログラミング言語処理系のベンチマークなどに使われる、再帰的に定義された関数である。 Wikip…

なぜ今更Haskellやってるかについて

標記の件について、今『ふつうのHaskell』を読んで、Haskellを少しずつやっています。 この前までScalaを勉強しようとしていたのに、なぜHaskellという疑問がありますが、これは単純に僕のメンタルモデルというか思考モデルというか、それに起因するところで…

JUnit4.12時代のParameterized Test

JUnitに追いつこう(2周回遅れ、男子一万メートルだと2分近くの差、箱根駅伝なら4分40秒の差)という趣旨のエントリーです。 要約はこっちを見るほうが早かった JUnit 4.12の新機能紹介まとめ - うさぎ組kyon-mm.hatenablog.com JUnit4.12に追いつこう(周回遅…

ふつうのHaskell 2章〜3章

『ふつうのHaskell』の読書メモ 標準の関数まとめ 関数 型 動作概要 == a -> a -> Bool 第一引数と第二引数を比較した結果を返す lines String -> [String] 改行文字コードで区切ってリストに変換 words String -> [String] 単語に分解する length [a] -> In…

Groovy2.4.3でJava8のStreamとかOptionalの演算もClosureでできるようになってた件

表記のとおりです。 Java8のFunctionalInterface群は使い勝手がよくて、そっちを主に使っていましたが、GroovyもJava8の言語仕様対応を進めてて、Groovy2.4.3から(それ以前から?)は def func = [apply: {s -> s.size()}] as Function<String, Integer> などと書かなくてもClo</string,>…