地味に復活

この記事( https://pc.watch.impress.co.jp/docs/news/1156297.html )を読んでから、プログラミング格差が広がりそうという危機感から小学生向けのHaskell本を執筆中。PC買えない低所得者層の子供とか、学校でしかPC触れない可能性あるし、離島の子供は台風…

自作ライブラリとそれを使った成果物。 LLだとここまでライブラリ化するとreverse使わない場面でもメモリに溜め込みまくったり、それを解消するためにイテレータ作りまくったりする必要があるんじゃなかろうか。 それでなくとも副作用と純粋部分が分かれてな…

ネットで1000万行のファイルを読み込ませて逆順にしたいとか言うのを(perlで)みたので、Cで1500万行近くまで対応してみた。

やり方としては一回EOFまでfputs回して、ftellで位置情報を配列に記録。 配列の逆から位置情報読み込んでfseekで移動を繰り返す。 記録時間が最初かかるけど、配列の大きさからビビっていたほどはメモリも消費しない。 (1400万行3.1GBの文字ファイルに対し、…

自分なりの宣言的プログラミングの定義

関数型言語や論理型言語(Prolog)は宣言的にプログラミングが出来ると入門書には書いてることがあります。 一方で、Javaの本でも宣言的なコードと書かれたものがあります。 どうもメソッド呼び出しのみが並ぶようなコードっぽい。となると、ifやfor等の制御…

Haskellで九九

手続き型言語では、オブジェクト指向全盛になった今もついループで書いちゃう九九。 じゃあ、ループじゃない書き方ってどんなだろう?と思ったので書いてみた。 import Text.Printf kuku =putStr $ concat [nineLines x y | x <- [1..9], y <- [1..9]] where…

HaskellのIOモナドは副作用は有るかも知れないけど、参照透明性は失われてないと思う

すごいH本を読み終えての感想。 IOモナド、あるいはアクションと呼ばれるものは、Haskellの中ではリストやMybeと同列。 ただIO型はモナドのインスタンスにしかなってないだけ。 (まあEqもOrdも出来ないからインスタンスになれないよね…) なのでリストの中…

熊本へ支援物資届けた時に感じたことと、ボランティア心得的なまとめ

まさかまたはてなダイアリーを使う日が来ようとはね。。。 熊本へ支援物資届けた後、つらつらとツイートしたのをここにまとめます。今回の熊本の地震では陸路による物流の重要性と、その脆さを実感した。もっとヘリで運ぶとか出来ないのかな。。。集積場には…

熊本へ支援物資届けた時に感じたことと、ボランティア心得的なまとめ

まさかまたはてなダイアリーを使う日が来ようとはね。。。 熊本へ支援物資届けた後、つらつらとツイートしたのをここにまとめます。https://twitter.com/n_shinchan/status/721958724835745792 https://twitter.com/n_shinchan/status/721946075490201600 ht…

電子書籍が安くなると言う幻想は捨てろ!!!!

お久しぶり過ぎて涙が出ます。 近況としては、絵が描けない。絵師さん捕まらない。と言う事で電卓でも作ってみるか。と作って、タッチしか対応してなかったのをキーボードにも対応中にVSがOS巻き込んでフリーズ。ソース含め、データが吹っ飛び、ふて腐れてま…

Haskell入門以前(Kindle版)が消える前に2冊売れてた・・・(ついでに近況報告)

誰ですか。 あんな内容の薄い本にわざわざ99円も払っちゃった人は。自分で書いといてなんですが、99円の価値も無いですよ・・・。 (だから犠牲者が出る前に消したのに・・・)あ、電子書籍を作るために一太郎買いました。 小説は絶対縦書きじゃ無いと嫌です…

Haskell入門以前をアマゾンに出品してみた。…けど、すぐ消した。

パブーにて、無料で公開している「Haskell入門以前」ですが、アマゾンの方が読んでくれる人が多いかな?と、出版してみたのですが…。 何と、アマゾン。無料で出版出来ないんですよ。 99円以上じゃなきゃダメだそうで…。一旦は、99円くらいだったら払ってくれ…

searchコマンドをByteStringで書き直すと上手く動かない・・・

countコマンドのRuby版アルゴリズムにHaskell/Pythonも合わせてみた+メモ化に関する疑問 - しんちゃんの日記で頂いたツムジさんのByteStringを使うと速くなるというアドバイスを元に、こちらのベンチマークのコードPython vs Ruby vs Haskell(文字列検索de…

Haskell入門以前の内容を、微修正しました。

日本語的におかしかった個所や、再帰版reverse関数の説明が少し間違っていたので、修正加えました。 それと、ghciとrunghcは末尾最適化されないと書いてたところも、runghcはどうも末尾最適化してるっぽい事が分かったので、ghciのみと言う書き方に直してい…

VisualStudioExpress2012 for Windows8が、不安定な件

C#

弟夫婦が新しくPCを購入。 OSがWin8だと聞いて、「おっしゃ!姪っ子(2歳)が楽しめるアプリ作ってみるか!」と意気込んでみたのは良いのですが、試作用に適当な画像を背景とした所までは良かったのですが、その上にさらにキャラクター(予定)用のこれまた適…

countコマンドのRuby版アルゴリズムにHaskell/Pythonも合わせてみた+メモ化に関する疑問

こちらのベンチマークで一位を取ったHaskell vs Python vs Ruby(ファイルの中身の文字数、ワード数、行数を表示するコマンド) - しんちゃんの日記Rubyのアルゴリズムに、Haskell/Pythonもコードを合わせて再度、ベンチマークを取り直してみました。結論から…

Python vs Ruby vs Haskell(文字列検索deベンチマーク)

ファイル名と検索したい文字列を与えると、そのファイルの中で検索文字列がヒットした位置のリスト(又は配列)を表示するプログラムを、Haskell、Python、Rubyで作り、ベンチマークを取ってみました。 こちらMicrosoft OneDrive - Access files anywhere. C…

Ruby版も完成

Python版完成 - しんちゃんの日記に続き、Ruby版も完成しました。 これからベンチマーク取っていきます。 せっかく、pi.datがあるので、膨大な円周率の数列の中から、7777777(7が7つ!)がいくつ有るか検索する。と言うので、ベンチマーク取りたいと思いま…

Python版完成

ファイル中の文字列を検索して、ヒットした位置のリストを表示するコマンド - しんちゃんの日記のPython版、何とか完成。Haskell版に比べると、大分複雑です。 もっと簡単に書けるぞ!!と言う人募集中。 import sys def search(s,str): list = [] x = 0 y = 1…

ファイル中の文字列を検索して、ヒットした位置のリストを表示するコマンド

取り敢えず、Haskell版は完成しました。 初めての検索関数でしたが、何とか作れました。 アルゴリズムに詳しくないので、力押し検索です。 一応、本には力押し検索は意外と有効なアルゴリズムと書いてありましたし、難しく考えなくても有効な手法と言うのは…

関数型言語のパターンマッチはifやswitch/case文の代わりではあるが、仕組み的にはオーバーロードに近い気がする

変な事を書いてすみません。タイトルからして訳が分からないと思うのですが、私が最近思っている、パターンマッチに関する考察です。単純に、よくパターンマッチはifやswitch/case文を書かなくて済む。と言う話があるのですが、使っていくうちに、パターンマ…

はてなブログに移行する意味は?

最近、管理画面にはてなブログが正式なサービスとしてスタートした的なメッセージが表示されてるのですが、見た所、TwitterやFacebookとの連携と、画面のレイアウトの自由度以外に利点らしきものが感じられないのですが、TwitterやFacebookでつぶやかれたり…

Haskell vs Python vs Ruby(ファイルの中身の文字数、ワード数、行数を表示するコマンド)

ファイルの中身の文字数、ワード数、行数を表示するコマンド(他の言語の投稿求む) - しんちゃんの日記のコードをPython/Rubyでも作り、ベンチマーク取りました。 読み込ませたファイルは、スーパーπで生成できる一番大きなπ。3355万桁を収めたpi.datがテキ…

ruby版完成

ほとんど何とかPython版完成 - しんちゃんの日記のpythonのコードそのまんま。 ARGV.each do |arg| puts arg content = open(arg).read words = content.split() chars = "" words.each do |word| chars += word chars += " " end lines = content.split("\n…

何とかPython版完成

ファイルの中身の文字数、ワード数、行数を表示するコマンド(他の言語の投稿求む) - しんちゃんの日記のpython版が何とか完成しました。 ぶっちゃけ、このコードは簡易wcコマンドの文字数のカウント方法を変えただけなので、"python wcコマンド"でググって…

Python版で早くも挫折

ファイルの中身の文字数、ワード数、行数を表示するコマンド(他の言語の投稿求む) - しんちゃんの日記のPython版を書こうとして、早くも挫折中・・・一応、書いた物載せますが、splitでtabも改行もスペースも中途半端にしか取ってもらえない・・・ なぜ? …

ファイルの中身の文字数、ワード数、行数を表示するコマンド(他の言語の投稿求む)

すみません。 Python,Rubyでも書くつもりで居たのですが、消防団の活動日と、習い事の日と、おまけに選挙の日と、予約してた本が届いた日が重なって、とてもじゃないですけど、ちょっと前に書いたHaskellのコードを載せるのが精一杯になってしまいました。 …

ラムダ式使わないようにrevnumbering書き直したら、nobsunさんに怒られそうなコードになった

自分のコードと発想を元に、なるべくラムダ式を使わない&zipWithを活用する形で書いてみたら・・・・ nobsunさんに思い切り怒られそうなコードが出来上がってしまいました。 nobsunさんのコードナンバリング - Qiitaとは関数の切り分ける処理の単位が違うの…

僕には関数型的発想が足りない(はがない)

ライトノベル、僕には友達が少ない。略してはがない。面白いです。 タイトルがあれなので、電子書籍でしか買う勇気がないですが・・・それはともかく、以前の日記(「ふと、手続き型言語だとちょっと大変かな?と思ったプログラム」のプログラムをPythonとRub…

Facebookで再会したSくんがプログラマーだった件(プライバシー保護のため、イニシャル)

ええ、そりゃもう、驚きましたとも。 幼馴染み(男)のSくんが、現役のプログラマーなんですもんよ。 Sくんは明日も早いので寝てしまいましたが、(いえ、私も明日早いんですよ?)興奮冷めやらずですよ。私も昔はプログラマーの卵として一時期、そういう会社…

返事が遅くなり、申し訳ありません。

先週より、12時間労働が始まりまして、2月頃まで返信が週1になります。 多分、日記を書くのも1,2週間に一回のペースに落ちます。今回、返事が遅れたTooさん、nobsunさん、methaneさん、お待たせして大変申し訳ございませんでしたm(_ _)mデスマーチって、3か…