関数型プログラミングをする際にどう考えてコードに落とすか?

もう数年関数型プログラミングを断続的に勉強し続けていますが、作れと言われれば作れるものの出来上がるコードが全然関数型じゃないばかりかスマートじゃありません。これはもうオブジェクト指向や手続き型に脳みそが浸食されていて、考え方の部分から関数…

Scalaの関数のJavaでの型

Scalaで様々な方法で定義した関数やカリー化・部分適用した関数がJavaでどんな型になるのか調べてみた。 記憶力が皆無なのですぐに忘れちゃうのです。 1. 複数の3引数の関数定義。 Javaでも普通の関数定義になりました。 def funcUncurry1(x: Int, y: Int, z…

「関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間」の解釈

はじめに 旬は過ぎてしまいましたが、「関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間」の僕なりの解釈を書いてみることにしました。僕の理解が及ばないところもまだまだ残っているのですが。 ただし、他の方のレビューと違…

NetWalker(PC-T1)のカーネル再構築

NetWalker(PC-T1)にはlzo_compress.ko, lzo_decompress.koというカーネルモジュールがないので、PC-Z1と同じようにcompcacheが使えません。そのため、compcacheが使えるようにカーネルを再構築しました。※ 以下の作業でcompcacheは使えるようになったのです…

NetWalker(PC-T1)にcompcacheをインストールして高速化

NetWalker(PC-T1)にcompcacheというものを使用してswap領域を圧縮した上でRAMに確保し高速化します。前回のカーネルが入っていることが前提です。PC-Z1にはlzo_compress.ko, lzo_decompress.koが元から入っているようなのですが、PC-T1には入っていないため…

Sharp NetWalker PC-T1購入

最近、iPhone4を紛失しまして家に余っていたiPhone3GSを無線LANだけで利用していました。古い機種なんて嫌だなぁと思っていたんですが、いざ使ってみると液晶の解像度以外は全然気にならない。速度も遜色ない気がします。ただ、その解像度が致命的でしてMacB…

テストだよ

MacJournalから投稿するテスト

HaskellのData.Treeを使ってみる

Tic Tac Toe(○×ゲーム)のゲーム履歴(History)の保存に使えそうな、Data.Treeというデータ型を標準ライブラリから見つけました。自分でほぼ同じものを作ろうとしていたのでちょっと調べてみて使えそうなら使おうと思います。 まず、どんなものか調べてみます…

Haskellの演算子について纏めてみた

人が作ったHaskellのコードを読んでいると、記号の意味がわからなくて困ることが多々あったので纏めてみた。hrefでもGoogleでも検索できないしさ… Haskellの演算子で使える記号 !#$%&*+./?@\^|-~及びUnicodeに含まれる記号(一覧が欲しい…けど√とか→とかもき…

欲しいプログラミング言語の機能

もうあるのかも知れないんだけど、欲しいプログラミング言語の機能を列挙します。できれば、自分で作りたいけど。 使う人によって機能を制限できる機能 使う人のレベルや作る箇所や工程によって言語やライブラリの機能を制限します。 おせっかいエラー表示 …

Haskellで素数を求めるよ

今回は息抜きです。Haskellで素数を求めてみます。 まずは、普通に1と自分以外(√自分)の間の整数で割れなかったら素数とします。 {-- 素数の一覧を表示 単純に全ての整数(2 〜 √x)で割ってみる --} -- xが素数だったらTrueを返す is_prime :: Int -> Bool is…

HaskellでTic Tac Toe(1)

この前http://d.hatena.ne.jp/marony0607/20111113/1321144101、HaskellでTic-Tac-Toe(○×ゲーム)を作ると宣言しました。完成したら公開しようと思っていましたが、なかなか時間が取れずいつになるか分からないので、今の時点でのコードを公開します。 まずコ…

高階関数とクロージャとカリー化と部分適用

今回は自分の関数型言語の疑問点を全部解決します。すぐ忘れるので備忘録も兼ねています。まだまだ勉強中で分からないことだらけなんですが、ひとまずよく話題に上るけどよく分かってない用語を取り上げました。今回もHaskellで検証しました。 関数型言語に…

HaskellでTic-Tac-Toe概要

突然ですが、HaskellでTic-Tac-Toe(○×ゲーム)を作ることにしました。簡単にどんなものを作るのか決めたいと思います。ScalaでSWT使って作るのと悩んだのですが、関数型言語に慣れるためにあえてHaskellで行きます。 要件 コンソールアプリケーションとする …

HaskellでFizzBuzz問題を解く(5)

前回http://d.hatena.ne.jp/marony0607/20111031/1320050127FizzBuzz問題は終わりにしますって言ったんですが、どうも気になって仕方がないので続きます。FizzBuzz問題くらいスマートに解きたいじゃないですか。 気になっていたのは、呼び出し側(main関数)が…

Haskellのモナドについて

とうとうHaskellの鬼門「モナド」の話です。色々と試してみました。基本の文法も分かってないのにモナドなんてやってる場合かよっていう状態ですが… モナド 私なりに理解したHaskellのモナドとは、 モナドとは単なる入れ物(ただし、return関数と">>="演算子…

HaskellでFizzBuzz問題を解く(4)

前々回http://d.hatena.ne.jp/marony0607/20111025/1319547210の続きです。 ruiccさんにコメント欄でElem型に比較演算子などを定義する方法を教えていただいたので、それを自分なりに使用して綺麗なコードに書き換えてみました。 まず、Elem型をShow, Eq, Or…

HaskellでFizzBuzz問題を解く(3)

えーと、今回のは番外編です。HaskellでのFizzBuzz問題ですが、さすがの私でも剰余を使えば出来るんだよということをお見せします!!(前回http://d.hatena.ne.jp/marony0607/20111025/1319547210) (本当はガード式とかタプルとかリストの内包表記とかを勉強…

HaskellでFizzBuzz問題を解く(2)

FizzBuzzも解けない開発者だというのはやはり問題なので、前回http://d.hatena.ne.jp/marony0607/20111023/1319331471に続きひたすら頑張ります。前回、最初の5しか"Buzz"に変換されなかったのは、myElem関数の中の"x > y"の不等号が逆だったからでした。"x …

HaskellでFizzBuzz問題を解く(1)

関数型言語はいまだによく分かってませんが、具体的なプログラムを書いてみればちょっとはわかるかなと思って、FizzBuzz問題を解いてみることにしました。 FizzBuzz問題についてはこちら。Fizz Buzz - Wikipedia ちなみに、まったく調べずに解くのはまだ無理…

Scala訳わかんね(2)…Haskellも使ってみる

未だに関数型言語とは何かがよく分かってません。 続けて勉強していきます。なお、Scalaだとオブジェクト指向というか手続きも書けてしまうので、Haskellも同時に使っていくことにしました。もしくは、Haskellを先に覚えてScalaを覚えるという順番になるかも…

Scala訳わかんね(1)

今Scalaを勉強してます。今まで手続き型言語(オブジェクト指向含む)をずっとやってきたので、関数型言語の考え方が全く違ってかなり難しい。でも、なんだかぼんやり分かってきました。 まだまだわからないことだらけなので、間違っている部分はコメントでど…

LifeTouch Note(Android)にUbuntu Linuxをインストール

電車の中でしか開発時間がとれないので、LifeTouch Note(Android)にLinux入れられないかなぁと思っていたら、How to Install Ubuntu on Android! | Android+Linux=AndroLinuxを見つけました。 その通り作業したらあっさりインストールは出来たんですが、起動…

これからのOS

最近はOSにこだわる人は少なくなったと思う。OSで提供する機能に大差がなくなり自分の使いたいアプリが動けばなんでもいいから。ブラウザやOfficeや開発環境など。 自分の場合も、気に入ったエディタと気に入った開発環境といくつかのWebサービスが手軽に使…

Twi2chBooklr(仮)計画

今構想中の新規サービスの計画についてちょっとお話ししておこうと思います。 サービス名は「Twi2chBooklr(仮)」。名前からは誰も想像できないと思いますが、ちょっと新しいSNSというかブログサービスです。マネタイズとかは今のところ考えてません。 ブログ…

進行中の計画

そもそもブログを始めた目的というのは、自分が今仕事以外で進めているいろいろなことの発表の場にしたいというのがありました。 飽きっぽい性格なので、一度公表してしまえばやめられないだろうというのもあります。 毎日仕事で5:30には家を出て22:00〜25:0…

理想の開発

最近、Python, Ruby, Haskell, Scalaなんかを勉強中。経験はC++, C#が長くて、JavaとCOBOLがちょっと。プログラミング言語で開発を効率化するのはそろそろ限界が来ていると思うので、ちょっとどうしたらいいか考えてみた。 プログラムを作るということは要求…

システムを作るということ

要件定義は完璧は不可能だけどシステムは完璧を要するっていうのが自明すぎて開発が辛い。開発者自身が自分の業務や私生活の要件定義することすら不可能に思える。もっと狭い範囲では、開発プロセスすら標準化出来てない。例えば、「災害が起きた時に家族全…

ブログ始めました

Twitter, facebookは適当につぶやいて、その結果をここにアウトプット出来たらなぁと考えてます。