タグ

ブックマーク / propella.hatenablog.com (24)

  • ATEX ルルド・マッサージクッション - 言語ゲーム

    ルルドマッサージクッションブラウン AX-HL148br 出版社/メーカー: アテックス(ATEX)メディア: ホーム&キッチン購入: 27人 クリック: 415回この商品を含むブログ (50件) を見る 最近マッサージ機能つきのクッションを購入しました。職場に置いてあるのを見て、このサイズでこの効き目は素晴らしい是非我が家にも一台ほしいと思ったからです。アマゾンのレビューも随分好印象。これは買わずにはいられません。買ってしばらく試した後、中身が気になって仕方がなくなりました。これは分解せずにはいられません。だから分解しました。 外カバーは交換も可能で、簡単に取りはずしが出来るようになっています。内のカバーは裏付きに取り付けられたファスナーで閉じられておりメンテナンス性が良く好感が持てます。 内カバーを外すともみ玉が現れます。大小二つあり大にはヒーターがついていて暖かな温もりが味わえるとい

    ATEX ルルド・マッサージクッション - 言語ゲーム
  • Reactive Programming の事をつらつら書く。 - 言語ゲーム

    最近再び Functional Reactive Programming (FRP) について調べているのでまとまり無くメモする。まず大まかな言葉の意味については http://en.wikipedia.org/wiki/Reactive_programming から辿るのが良いと思う。簡単に言うと、FRP とはスプレッドシートの計算モデルを拡張したライブラリや言語、プログラミング技術の事を言う。Function という言葉は付いていたり付いていなかったりするけど、Reactive Programming は副作用を制限する手法なので、どの手法も多かれ少なかれ関数的に使う。 FRP はかなり大雑把に使われる言葉なので人に説明するのが難しい。だけどよく似た粒度の言葉としてはコレクションライブラリくらいが丁度良いと思う。関数プログラミングや論理プログラミングのような大げさな言葉では無い。APL

    Reactive Programming の事をつらつら書く。 - 言語ゲーム
  • Alloy 勉強中 - 言語ゲーム

    最初に Alloy の事を知ったのは http://d.hatena.ne.jp/keigoi/20090210/p1 を読んで、面白そうだと思った。でも、http://alloy.mit.edu/ のウェブサイトを見てもどこへ行ったら良いのか分からなくて、意味不明すぎて放置していた。しばらくして、同僚が研究で Alloy を使っている事が分かった。これは素晴らしい。というのも、前から私は Coq とか、CafeOBJ とか、論理っぽい事に興味があったんだけど、周りにこういう事を話せる友達がいなかったので寂しい思いをしていたからだ。正直 Alloy の妙にオブジェクト指向風の文法に馴染めなかったけど、同僚に Coq を勧めるより自分で Alloy を勉強する方がはやいと思ってチュートリアルをやる事にした。←いまここ。 ようやく分かった事。Coq と Alloy は一階述語論理を使っていると

    Alloy 勉強中 - 言語ゲーム
  • Asterisk でインターネット電話 - 言語ゲーム

    インターネットで電話をかける VoIP の中で一番人気なのは Skype ですが、他にも色々方法があります。特に SIP が代表的な規格なようで、オフィスの電話もよく見たら SIP でした。電話というのはメッシュネットワークの最大のアプリだと思うので、週末 SIP の事を調べるために オープンソースの SIP サーバ Asterisk を試してみました。 やった事 インターネット上のサーバに Asterisk をインストール 家にあるパソコン二台を Asterisk に接続して通話する。 Asterisk のインストール サーバーには、さくら VPS で借りてる Ubuntu 10.04 LTS を使いました。インストールは超簡単で $ sudo apt-get install asteriskだけです。これでカーネルの構築から起動まで一挙に行われます。 Asterisk の設定 Aste

    Asterisk でインターネット電話 - 言語ゲーム
  • LLVM で hello, world - 言語ゲーム

    LLVM で hello, world した記録。とても簡単でした。 LLVM は http://llvm.org/releases/2.8/llvm-2.8.tgz からダウンロードしました。コンパイルの仕方は普通に $ ./configure $ make $ sudo make installです。結構時間がかかります。LLVM のプログラムは LLVM assembly language で書きます。 ; hello.ll @hello = internal constant [13 x i8] c"hello, world\00" declare i32 @puts(i8*) define i32 @main() { start: %0 = call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @hello, i32 0, i

    LLVM で hello, world - 言語ゲーム
  • 新世代の投げ銭システム? Readability で無広告インターネット体験 - 言語ゲーム

    http://www.nytimes.com/2011/02/01/technology/01read.html 今の Web の最大の問題は、未だにコンテンツ自体から収益を得る方法が確立されていない事だ。その解決になるかも知れない面白いサービスを見つけたので試してみた。 有料サービスの http://www.readability.com では、ニュースサイトを広告無しで読む事の出来る機能を提供している。料金はユーザーが設定出来て最低月5ドルから。この料金のうち 70% が閲覧した割合に応じて各サイトに割り振られる。例えばひと月のうち半分を Techcrunch を読むのに費やしたら、5ドルの七割の半分、1.75 ドルが Techcrunch に支払われる。 会費は Amazon のシステムを通して払うので、Amazon のアカウントを持っていれば新たにカードの登録をしなくても良い。 S

    新世代の投げ銭システム? Readability で無広告インターネット体験 - 言語ゲーム
  • Haskell でダックタイピング 、色々な型を混ぜて配列を作る。 - 言語ゲーム

    動的型言語の特徴の一つに、配列に色々な型のデータを混ぜられる事があります。いわゆるダックタイピングというやつです。例えば Javascript では ["1", 2, 3.4] のような配列を作る事が出来ます。Haskell のような強い型付けのある言語でこれを実現する方法を勉強したので書きます。 目標として、配列の中にあるデータを文字列として連結する事にします。Javascript で言うと、 append = function (xs) { var result = xs[0]; for (var i = 1; i < xs.length; i++) result += xs[i]; return result; } のような関数 append を作ります。append(["1", 2, 3.4]) の答えは "123.4" になります。 代数データ型を使う Haskell では直接リ

    Haskell でダックタイピング 、色々な型を混ぜて配列を作る。 - 言語ゲーム
  • 継続とは何か? - 言語ゲーム

    私の苦手な単語である継続とやらについて調べてみた。 定義: 『プログラミング言語 SCHEME』のおまけの R5RS 6.4. 制御機能より抜粋 procedure: (call-with-current-continuation proc) proc には1引数を受け取るプロシージャを指定する。プロシージャ call-with-current-continuation は現在の継続を「脱出プロシージャ」としてパッケージ化し、proc に引数として引き渡す。 継続とは、(デフォルトの)計算処理終了後の将来像を表現したものである。 将来像を表現したものって酷い言葉だ。関数の機能としては、とりあえず引数は一引数の関数で、その引数に継続が入るらしいので何が入るか試してみる。 gosh> (call/cc (lambda (c) print c)) #<subr continuation>特に何も

    継続とは何か? - 言語ゲーム
  • Lambda the Ultimate を Kindle で読む - 言語ゲーム

    Kindle ユーザに人気のツールに Calibre というのがあります。これは iTune みたいに使う物で、電子書籍のバックアップやフォーマット変換を行う物です。一見初心者にも優しい見かけをしていて、iTune みたいな使い方をしても良いのですが、このツールに気を出させようと思うと Python を覚えた方が良いです。Python 無しの Calibre は elisp 無しの emacs みたいな物です。Python を使えば Calibre の変態的に強力なパワーを味わう事が出来ます。という事で、そのさわりとしてブログを Kindle 等の e-book で読めるように変換するというのをやります。 Calibre で Python をつかうにはコマンドラインツールをインストールする必要があります。Mac では Calibre 起動後、Preferences - Advanced

    Lambda the Ultimate を Kindle で読む - 言語ゲーム
  • Alloy: A Lightweight Object Modelling Notation - 言語ゲーム

    http://sdg.csail.mit.edu/pubs/2002/alloy-journal.pdf Alloy が難しく見えるのはオブジェクト指向っぽい文法とその意味に隔たりがあるからかも知れません。Alloy のアイデアが書かれてあるこの論文を読んで思いました。この論文のおすすめ読み方。 1. 導入を読む 記号が苦手じゃなければ 3.1, 3.2, 3.3 カーネル言語について読む 4. 5. 6. 他の言語との比較を読む 2. Example と残りを読む。 頭から順に読むとかなり意味不明でした。特に 3 章のはじめのカーネル言語の話が面白いので書きます。 Alloy の設計は二段構えになっています。単純で機能の少ないカーネル言語をオブジェクト指向風の文法で包む形になっています。文法は一見 Java のクラス定義っぽくて親しみやすいですが、細かい所で全然違うのでカーネル言語の性質

    Alloy: A Lightweight Object Modelling Notation - 言語ゲーム
    nsyee
    nsyee 2009/07/14
  • Squeak と Haskell の数値 - 言語ゲーム

    今度は Squeak と Haskell 数字について調べて行きます。数字は一番基的でなじみやすいデータなので、言語の性質が現れやすいと思います。 数値型の構造 Squeak と Haskell それぞれで用意されている型は次の物があります。 固定長整数 Squeak : SmallInteger Haskell : Int 任意長整数 Squeak : LargePositiveInteger, LargeNegativeInteger Haskell : Integer 倍精度浮動小数点 Squeak : Float Haskell : Double 分数 Squeak : Fraction Haskell : (Integral a) => Ratio a 複素数 Squeak : Complex Haskell :(RealFloat a) => Complex a これらの数値

    Squeak と Haskell の数値 - 言語ゲーム
  • Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム

    私は Haskell の一番すごい所は型クラスだと思っているんですが、ここ数日それを言葉にしようとずっと悩んでいました。結局、もう一つの好きな言語なSmalltalk と比較して型クラスがどういう物か書いてみる事にしました。 型クラスという名前について Smalltalk に染まってしまった人にとって、「型クラス」というのは最悪なネーミングです。あまりにも Smalltalk のクラスと違いすぎるからです。機能的には traits や Java のインタフェースから継承を除いた物と思ったら良いです。また、「継承」や「インスタンス」など、Smalltalk と Haskell 両方で使われる言葉はことごとく別ものと思った方が良いです。 型クラスの位置づけ Smalltalk をはじめとするオブジェクト指向言語の機能をそのまま Haskell で実現しようとすると最初はすごく戸惑います。日

    Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム
  • foldr と foldl の違い - 言語ゲーム

    こないだの属性文法の記事では沢山 foldr が出てきます。foldr や foldl は関数型言語におけるループ構文です。私のようなにわか関数信者は嬉しがってつい再帰を使ってしまいますが、再帰のようなパターンを良しとしない物の Haskell プログラマは fold を使います(多分)。ただ、foldr や foldl というネーミングは、文章が左から右へ流れると信じて疑わない欧米帝国主義の醜悪な悪習と言わないまでも、再帰についての重要な違いを軽視しているような印象を受けます。これらの関数は、当は全然対称じゃないのです。というわけで調べてみます。 さて、足し算はどっちに結合しても良いので、1 + 2 + 3 + 4は次のように書けます。 foldr (+) 4 [1, 2, 3] -- 1 + (2 + (3 + 4)) == 10 foldl (+) 1 [2, 3, 4] --

    foldr と foldl の違い - 言語ゲーム
  • Haskell でヒューメインインタフェース。モナド記法を使わないで IO してみる - 言語ゲーム

    誰にも頼まれてないのに Haskell の復習をしています。前から気にくわなかったのが Haskell の do 記法です。例えばコンソールから二つの文字を入力して結果を出すだけのプログラムをこういう風に書きます。 main' = do num1 <- getLine num2 <- getLine print $ read num1 + read num2 これはかったるい!そう思いませんか?何故次のように書けないのか!これはモナドが悪いのか? main'' = print ( read getLine + read getLine ) そういうわけで、素人ながらもうちょっとマシに書けるのでは無いかと試してみました。 まず、read getLine と書けない件。getLine はコンソールから文字列を受け取るモナドだけど、read は文字列自体を受け取る関数なのでうまく合わない。例えて

    Haskell でヒューメインインタフェース。モナド記法を使わないで IO してみる - 言語ゲーム
  • parsec - 言語ゲーム

    最近 Haskell に触ってなくて寂しいなあと思い、パーサーコンビネータと言うのを試してみました。まず import はこのようにします。 import Text.ParserCombinators.Parsec Parsec には便利なパーサの部品が沢山ありますが、勉強のためあえて自作します。まずある文字列の先頭が a の時だけマッチするやつを作ります。特定の文字にマッチするには char 関数を使います。char 関数以外は、パーサを駆動するだけのための部品です。 aParser :: String -> IO() aParser input = out (parse (char 'a') "error" input) where out (Right x) = print x out (Left err) = print err -- Main> aParser "abc" --

    parsec - 言語ゲーム
  • FPGA に夢を見る。 - 言語ゲーム

    この週末はずっと FPGA で遊んでいた。出来たのはただ LED が光るだけの物だが、やっと考えたとおり動いてくれてほっとしている。一息ついたついでに、FPGA のどこが面白くて、何を目指しているかちょっと書いてみる。 この数週間の短い間に、私は FPGA がソフトウェアを変える!と信じるようになった。FPGA はハードウェア記述言語で動かすチップだから、ハードウェア記述言語がソフトウェアを変える!という妙な話の流れになってしまうけど。前からぼんやり思っていたプログラミング言語への違和感が急にはっきりした。その違和感とは、プログラミング言語全体が、いわゆる早まった最適化に陥っているという事だ。 プログラミング言語が必要なのは、コンピュータには人間の言葉が分からないからだ。コンピュータは順番に単純な命令を実行する事しか出来ないから、大きな問題を小さく分けて、さらに順番に並べなければいけない。

    FPGA に夢を見る。 - 言語ゲーム
  • [haskell] How To Arrow 基本 - 言語ゲーム

    http://d.hatena.ne.jp/propella/20070807/p1 1:基 http://d.hatena.ne.jp/propella/20070807/p2 2:並置 http://d.hatena.ne.jp/propella/20070808/p1 3:選択 -- なんか知らんうちに Arrow 流行ってるようなので試してみる。 -- http://www.cs.chalmers.se/~rjmh/afp-arrows.pdf によると、ポイントフ -- リースタイルに IO を混ぜるのが Arrow だと考えればよいらしい。 import Control.Arrow -- Arrow では高階型を使いまくるので慣れないとちょっと恐ろしく見える。 -- Arrow は Monad と同じくクラスだが、Haskell で言うクラスとは他でいう -- インタフェース

    [haskell] How To Arrow 基本 - 言語ゲーム
  • 論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム

    Haskell のアニメーションライブラリ Yampa についてのチュートリアル。またもや FRP (Functional Reactive Programming) の話題です。SOE の FAL は休憩して、その未来の姿である Yampa に寄り道します。Monad を一般化した Arrow なるものを使って、time / space leak なる物を排除し、モバイルロボットのプログラムをきっちり記述します。 プログラムの例として、シムボット(ロボットシミュレータ)を扱います。シムボットは二つの独立して動く車輪を持ち、ぶつかりセンサーや、前後左右に光学センサーを持ちます。また、他のシムボットの位置を知る事も出来ます。 シグナル (p 3) 一番重要な概念はシグナルです。 Signal a = Time -> a つまり、シグナルとは時間の関数です。例えばシムボットは車輪が二つあるので

    論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム
  • ArrowLoop - 言語ゲーム

    さて、気分を変えて ArrowLoop をやります。論文に書いてある loop f b = let (c,d) = f (b,d) in c の意味が全く分からなくて Arrow の勉強が一ヶ月近く停滞していたのですが、id:MaD さんが素晴らしい解説 http://d.hatena.ne.jp/MaD/20070818 を書かれているので自分なりに写経します。loop を使って普通のループを作るには、引数として関数を一つ与えます。関数の型は (b,d) -> (c,d) のような入出力ともタプルとします。よくある図で示すと、タプルの後ろの引数がくるりと入力に繋がれる形をしています。 import Control.Arrow nonsense (b, d) = (b + 1, d * 2) -- *Main> loop nonsense 1 -- 2 -- このしようも無い例では、b +

    ArrowLoop - 言語ゲーム
    nsyee
    nsyee 2008/05/03
    『手続き的にループを書くのは天動説のような物です』
  • Haskell でスタック言語を作る - 言語ゲーム

    Arrow はスタック言語だと口で言うだけじゃ信用してもらえないと思うので軽く作ってみる。 もしかして、Haskell で Joy (風言語)というのはとても難しいのではと思っていた。何故難しいかというと、スタックというのはリストなのだけど、リストというのは普通一つの型しか入れる事が出来ないのだ。でもリストじゃなくてタプルだったら問題ないと気が付いたのでやってみた。どちらかと言うと Cat 言語にあわせて作りました。サボってパーサーを作ってないので、文法は Arrow のままです。こんな風に実行します。リストの最後に factorial の Cat 風定義も置いておきました。 Cat> runCat $ push 3 >>> push 4 >>> add (7,())module Cat where import Control.Arrow data Quoation a = Q a in

    Haskell でスタック言語を作る - 言語ゲーム