2014-01-01から1ヶ月間の記事一覧
HaskellのData.List#nubと、 RubyのArray#uniqは、どちらもリスト/配列内の重複要素を取り除いた新しい配列を返す関数です。 どうもHaskellのnubはRubyに比べてだいぶ遅いなあと感じます。 リストと配列のデータ構造の違いに起因するのだろうと想像はできま…
「IOモナド難しい..Rubyで書いたらゆるふわ楽勝なのに..」 とか前に書いてたので、ほぼ同様のコードをゆるーく書いてみました。 gist8574615 # => #MJDRYCAD #CKLKCQSW #CHJAQKSZ #YWASAYMI #UHVRVEWW #以下略 重複する可能性を考慮して、必要な数の2倍のコ…
「おろポンくん、プログラミングできるの?」 僕「うーんどうだろう、少しは書けますね」 「じゃあWindowsのプログラムとか作れちゃう?」 僕「いや、Windowsはちょっと」 「分かったJavaだ」 僕「Javaは全く。。」 「なんだ、Web系?PHPとか?」 僕「PHPは…
コンビニの商品にも、スーパーの商品にも、たいていの売り物にはバーコードがついていますね。 すだれハゲみたいなアレです。 http://ja.wikipedia.org/wiki/バーコード 日本の商品に使用されるバーコードは JANコード というもので、8桁あるいは13桁の数字…
練習のため、素数判定で有名なエラなんとかの篩を実装しました。 エラなんとかの篩 13行目のx ^ 2が毎回評価されると実行速度に悪影響を与えそうですが、参照透明性のお陰で1度しか評価されていないハズですね。 reverseはコストが高い処理ですが、1回しか…
Haskellで逆ポーランド記法電卓。関数型言語らしい題材で練習してみる。 まずは普通に書いてみる。 最初は、Stackを定義してpopやpushを実装するべきかと考えたけど、強力なパターンマッチのおかげでシンプルに書けた。 単なるリストをスタックとして使用し…
ふつうのHaskellプログラミング 初版 p246 練習問題 9.6問題: 新しい型"Line"を定義し、sortLines関数でソートする Line型は`data Lines = Lines {number::Int, string::String} deriving Show`で定義されるように、行番号とテキストで構成されます。 問題で…