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

オブジェクト指向関連の不満な点

また遅れてしまった…オブジェクト指向 Advent Calendar11日目。 最近いろいろオブジェクト指向について調べていて、やっぱりこの概念はいかがなものか、と思ったことを軽く書く。 継承 まずこれ。オブジェクト指向において「AがBを継承している」というのは…

状態、手続き、OOP

これはオブジェクト指向 Advent Calendar 2014の7日目の記事です。 入力によって変化する状態をうまく扱うことはプログラミングにおいて重要である。この記事では、状態や手続きを扱うさまざまなアプローチを紹介、比較する。 手続き型プログラミング 命令の…

大洗に行ってきたよ

はるアイコン鯖 Advent Calendar 2014 - Adventar ※現実で。 ※現実で。 ※現実で。 海岸 大洗磯前神社入口 絵馬 痛絵馬は西側に偏っている模様。 神社から見える水平線 石が置かれまくっている像 大洗駅内にて 大洗を3つの言葉で表すとすれば、「海」「レンガ…

関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える

Googleで適当に検索すると とズラリと出てくる。 オブジェクト指向 v.s. 関数型プログラミング 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した プログラマが知るべき97のこと/関数型プログラミングを学ぶことの…

Haskellでオブジェクト指向を再発明する

状態管理のモデル案: spawn/killモデルの実装を作ってみた。 worldsパッケージがそれだ(露骨な名前だが赦してほしい)。前の記事と違う点は、Worldがモナド変換子として実装されている点だけである。 worlds-exampleは画面内のキャラクターを方向キーで操作す…

状態管理のモデル案: spawn/killモデル

生と死のあるアクターを表現するためのモデルについて考えた(あくまで個人用メモ)。 以下の型変数sは世界の一意性、閉鎖性を表す。生命や名前を勝手に外に持ち出すことを防ぐために必要。 Life m a: 生命を表す型。aは生命の最終結果。 Name s a: 生命に与え…

本日の料理: ヤングコーン、ピーマン、豚肉の炒め物

食材と処理 にんにく1かけをみじん切りにする。 ピーマンの実を適度な大きさに分割する。 ヤングコーン(水煮)を小穂に対し斜めに切断する。 豚の細切れ肉を用意する。 調理 フライパンを中火で熱する。 フライパンにごま油を適量入れる。 にんにくを入れて香…

Karakuriの導入(0) -状態をぶった切る!-

あるとき、私は思った―― 「Getter、Setterと、状態を次に進める関数を持つ何かがほしい!そうすればゲームやユーザーインターフェイスなどがとても書きやすくなるのに……!」 私はそれをカラクリと名付けた。存在するかどうかわからない理想の構造を求めて… …

継続渡しなHaskellライフ

CPS(Continuation passing style, 継続渡しスタイル)は、関数型プログラミングにおけるプログラムの書き方の一つである。CPSを導入する簡単な例をいくつか紹介しよう。 まず、入力された数値が3の倍数かどうかを判定するプログラムを作ってみよう。 foo :: I…

Lensを使うぜ!

パッケージをインストールするぜ!そしてさっそくghciを起動するぜ! $ cabal install lens $ ghci GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linkin…