Haskell

Haskellで10を作るプログラムを書いてみたので動画で公開してみた

最近Rui Ueyamaさんがコーディング動画をアップされているのを見て、私も動画を撮りたくなりました。題材をしばらく考えていたんですが、10を作るプログラムを書いてみることにしました。 www.youtube.com 後から見直すと色々ミスっていて、わりと焦っている…

CSVファイルをSQLのクエリで集計できるqコマンドをHaskellで実装してみました!

先日、Twitterでqコマンドが話題になっていました。 github.com スターが3000を超えていてすごいですね。2014年から開発されているツールで、Pythonで書かれています。 これはGoで実装してみたいなーと思っていたところ、mattnさんが素早く実装されていまし…

Haskellでimport文をソートするプラグイン vim-haskell-sort-import を作りました

Go言語には、gofmtというコードフォーマッターがあります。 標準ライブラリーで備えており、このフォーマッターをかけることを半ば強制することにより、Goで書かれたコードはどれも統一的なスタイルをしているように見えます。 gofmtには様々な機能がありま…

Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説!

Haskellには抽象的な高階関数や演算子がいくつもあり、たまにそれらを巧妙に用いたコードがでてきて感心することがあります。 他の人が書いたHaskellのコードを読んでいると、なかなか面白いものと遭遇したりします。 巧妙に書かれたコードを解読していくと…

sjsp 0.1.0 をリリースしました

先日作ったsjspですが、その挙動も安定し、最低限必要かと思われるオプションを作ったので、最初の安定版リリースとして0.1.0というタグを打ちました。 github.com 同時に、Hackageにもアップロードしました。 sjsp: Simple JavaScript Profiler これでGitHu…

シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か

あらすじ Web技術が複雑になる中で、JavaScriptのプロファイリングをとる方法とは。 プロファイリングを取るためのコードを手で書いてみましょう。 とてもシンプルで、かつ最高のJavaScriptプロファイラ sjsp を作りました。 本当にあった怖い話 上司 「とに…

Google Code Jam 2015 Qualification Round

これからもたまにはコンテスト参加しよう。あたしがんばるもん。まぁCodeforcesは日本時間だとつらい感じに開催されているので、寝不足にならないように程々にね? A. Standing Ovation 左からなめて行って、足らなかったら観客を足す。足した観客はみんな拍…

Haskellでハマった - runhaskellを使うとリストがメモ化されない?あるいはモジュールにすると-O3でもリストがメモ化されない?

Haskellを書いていて、久しぶりに言語自体について不可解な挙動にぶち当たった。普段Haskellを書いていて、言語について「なんだこれ」と思うことはまずない。ところが、今回の疑問点は自分の理解を遥かに超える内容だった。最初はTwitterで質問してみたのだ…

実装して理解する遅延評価の仕組み 〜 thunkを絵に描いて理解しよう・JavaScriptでHaskellを実装!?

この記事では, Haskellに用いられる「遅延評価」の仕組みを, 図に描いて説明します. 更に, 遅延評価版のフィボナッチ数の無限列を, JavaScriptで実装します. 遅延評価とはどのように動くのか, 考えて行きましょう. HaskellのコードとJavaScriptのコードの比…

Haskellで書くBrainfuckインタープリタ

注意: Haskellerの方は, 私のコードを見る前に自分で実装したほうが, 気持ちがよく分かると思います. 頑張って下さい. 自分で実装したのと, 私のコードを比べてみてください!!! HaskellでBrainfuckインタープリタ書きました. -- Brainfuck interpreter in…

ghciがセグフォで起動できなくて困った

先日Macをクリーンインストールした後, Haskell Platformを http://hackage.haskell.org/platform//mac.html から入れたんですが, 問題が生じました.ghciが3回に2回ほど, Segmentation faultで起動できないのです. 「何かの関数を実行したら落ちる」とかそう…

Haskellで見る双子素数, いとこ素数, セクシー素数

素数, primes. 数学者を魅了してやまない数たち. その中でも, 特徴のある素数たちがいます. 双子素数, 三つ子素数, 四つ子素数, いとこ素数, セクシー素数,.... 何がセクシーなんでしょうか? 気になります!!! 順番に計算しつつ見ていきましょう. 今回もHaske…

Haskellで見るメルセンヌ素数

メルセンヌ数と呼ばれる数があります. 自然数に対して, メルセンヌ数はで定義します. 小さい方から, となります*1. この数字が素数の時はメルセンヌ素数と言います. 小さい方から挙げていくと, となります*2. メルセンヌ数は素数テストのしやすさから, 巨大…

Arrow golfなんていうのも面白いかもしれない

短い関数をArrowのコンビネータで組み直す競技.競技であるから, 一応ルールを書いとかなきゃね. 使える関数は, Prelude/Control.Arrowでエクスポートされているもの. 関数hogeを実装せよ, とは, hogeを変数を使用せず書けということである. hoge x = fst x …

これはArrowに関する記事を書くという記事です

書きます.Arrowについてなんか分かったので, いつか必ず書きます.Arrowというのは決して読めないコードを書くためのものではありません.それは, 計算の本質です. 関数型言語に触れた人ならば, 計算の本質はλ計算と言うかもしれません.確かにλ計算は素晴らし…

Control.Arrowでエラトステネスの篩, 階乗

エラトステネスの篩の前に, 階乗をArrowでやります. 理由はおいおい分かります. 階乗を普通に fact n = if n == 0 then 1 else n * fact (n - 1) main = print $ fact 10 3628800 流石にこれはいいですね. はい.Arrowに急ぐ前に, まずfixを使って書きましょ…

Control.ArrowでFibonacci

フィボナッチの綴りが分からなくてググったのは内緒です.先にControl.ArrowでFizzBuzz - プログラムモグモグの方を読んで下さい.ArrowにはArrowLoopってのがあって, コイツがなかなか面白い. これを使ったらフィボナッチ数列が出来る. 例えばhttp://d.hatena…

Control.ArrowでFizzBuzz

もうね, 何番煎じか分からないよ. それでもFizzBuzzは飽きないから奥が深いよね.昨日からArrowを初めて, 取り敢えずGeneralising Monads to Arrowsにさっと目を通した. 良い論文だった. つーこって, FizzBuzzを書いてみよう(お約束!!!まず最初に書いたコ…

代数的データ型と準同型写像

最近考えていることを述べます. 代数的構造と準同型写像に関する考察です. 特に必要な知識は無いつもりですが, Haskellのコードを読めると嬉しいです. import Prelude hiding 以下のものを隠しておいて下さい. import Prelude hiding ((+), (++), length, Tr…

A Play on Regular Expressions読んだ

A Play on Regular Expressions最後まで読みました. 対話的に書かれていて読みやすかったのと, ソースコードがほとんどそのまんま動いたため楽しかったです. 正直言って, 正規表現のエンジン書いたのは初めてでした. この論文の素晴らしい所は, そんなぼくで…

Code Jam Japan 2011 予選

ずっとcodeforcesもやってないし, たまにはこういうのやらなきゃなぁと思いつつ... 全然駄目ぽ(´・ω:;.:... AのsmallとCのsmall/largeが正解でした... とりあえずCの自分の解答 main = interact $ format . map solve . parseInput parseInput = tail . map (…

[]と[[]]でboolean

「と[]がfalseとtrueに対応するようなandとor作れないかなぁ >>=とかうまく使って」 @itchynyルール 短いこと 綺麗であること 途中でエラーが生じないこと Prelude> -- Prelude> -- []: false, [[]]: true Prelude> -- リストでBoolean計算!? Prelude> Prelude…

GHCインストール後のエラー

今日Ubuntuをクリーンインストールした後, GHCをインストールした後, ghciを起動しようとすると, こんなエラーが出た. Loading package integer-gmp ... <command line>: can't load .so/.DLL for: gmp (libgmp.so: cannot open shared object file: No such file or direc</command>…

Haskellのコード150行で, Twitterに投稿するだけのクライアントを作ったよ

Haskell触り始めて三ヶ月ほど経ったープログラミング自体を始めて, 一年半くらいー (だいたい3日前, こんな夢を見たんだ せんぱーいwww プログラム書いててwww OAuth触れないのってwww 笑ってませんよ?wwww ちょ、ちょっとごめんなさいwww あはははwww…

HaskellでCurses!!! HSCursesライブラリーを使ってみたよ

Cursesというのは, TUIなアプリケーションを作るためのライブラリーの事です.参考: http://ja.wikipedia.org/wiki/Cursesこれを使ったら, ターミナルの上で, UIを実現するのが楽になるらしい.色んな言語で実装されているので, みんなも好きな言語で探してみ…