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

memo

http://lambda-the-ultimate.org/node/2981 Polymorphic Algebraic Data Type Reconstruction多相代数型再構築??(直訳でもピンと来ない)

某TKB大

のプロなんとかにゅなんとかっていう授業は、C言語で出来るだけ短いコードを書いて、プリンタに楽をさせてあげよう、という提出媒体は紙だからあんましエコじゃないよなーという感じの授業です。 例題としては main(){puts("How are you?\nI am fine,thank y…

超似非G-Machineを実装してみた

http://www.jaist.ac.jp/~kiyoshiy/writing/ http://www.jaist.ac.jp/~kiyoshiy/writing/gmachine.pdf 前半だけ読んで、ざっと書いてみました。 Graph-Reductionとか正直分からなかったので、それを考慮して書こうと思ったのですが、普通にちっこいλ式解釈機…

Prolog

の時代が来ると聞いたので、早速図書館でPrologの技法なる絶版の本を借りてきました。 まぁ誇張しましたが、論理プログラミングとかは知らんので良いかなと。 取りあえずこいつを読んだり。

Chromeにおいては

JavaScriptの代わりに、Pythonで色々書けますよー的なのをgoogleが出して、そしたら色んな人が俺俺言語をChrome上で動かそうとして面白い事になるかもしれないので、そこで他のブラウザと差が取れるんじゃないかとは思います。 要するにブラウザ拡張の手ほど…

あーそーいや

TemplateHaskellのあの感じは、Core languageにそっくりだと思うんですけど、どうなんでしょうね。

Google Chromeの特にV8あたりを使ってみる

Google先生がChromeとかいうのを出したようなので、使うのはそっちのけ、というかWindowsとか無いのでJavaScript engineであるV8のソースコード引っ張ってきた。 v8.hとかをincludeする事は出来るけども、肝心のJavaScriptのinterpretというかcompileが出来…

JHC

jhc使った事無いとか、マジ小学生までなんですけど、本当に。。。 って言われたので、jhcを使ってみましたとも。 jhc jhcの事なんか皆さん私ごときに説明されたくないでしょうけど、図々しくそして誤解を恐れずに言うと、Cのコードを吐いてそいつから実行フ…

GADTs

http://okmij.org/ftp/Haskell/PrintScan.hs 元はコレ。 で、sprintfの所だけ抜き出した {-# LANGUAGE GADTs #-} data F a b where FLit :: String -> F a a FInt :: F a (Int -> a) FChr :: F a (Char -> a) (:^) :: F b c -> F a b -> F a c intp :: F a b…

D

の同人誌とかを、Dが好き過ぎて大変な事に今現在なってるmiskyさんとかが出してくれないかなーとか思うわけです。 そいでもって もし書かれるんだったら、お手伝いさせて欲しいなーとか。

scm2js

http://hop.inria.fr/usr/local/share/hop/weblets/home/articles/scheme2js/article.html この辺とかを読む。メモ Abstract SchemeからJavaScriptにコンパイルする事は出来るんだけど、Continuations,exact numbers(これ何?),partial treatment of tail rec…

TH使って思ったのは

実プログラミングでは全く訳立てて無い、というか普通のプログラム書いてないで適当に遊んでただけなので勝手な事書きますけど、書きにくさはあるものの、この柔軟さはC++のTemplate的意味よりmacro的な意味に寄ってるんじゃないかとかは思いました。

Type Safe Printf

をTHで実装してみる的な。 printfの型無視バージョンの実装は普通こんな感じになります printf fmt = pr fmt "" where pr :: String -> String -> なんか色々入るの pr "" res = PRes res pr ('%':'d':cs) res = (\i -> pr cs (res ++ show (i::Int))) pr ('…

THでzip製作

論文にのってたので、Quoted-Monad使わない方向性で書いた。 ていうか、[| \x -> x |]とかで書いて、$つけるとか意味分からんので。 それとdoc読まないでいきなり書いてるから未だにさーぱり分からん。 module Th_ZipN3 where import Language.Haskell.TH im…

LLFutureに行ってきた

JavaScriptはWebアセンブリだと言っていたけど、正直遅いしうーんうーんという話なわけです私としては。 そんな事やるんだったら、取りあえずFirefoxに梃入れして、直接俺俺言語動かせる様にしたら良いじゃないかと。 という事でfirefoxのソースコードを取っ…

LL Future

という事で、10:00に間に合うべく、早起きしてすたこらとLL Futureの会場に向かいます。 まず会場の確認しとく http://ll.jus.or.jp/2008/access中野って秋葉原からどうやっていけば良いのかが分からない。 調べによると、秋葉原から山手で神田、神田からJR…

Kamen Lispのようなもの

少なくとも私が使っているMacBook上で動いているFirefox3.01ではアドオンがインストール出来ません。 extensions.checkUpdateSecurity = falseにしても、互換性のチェックでこけてましたので。 http://www.progmatism.com/software/kamen/index.php で、なん…

tupleとlistを行き来する感じのやつ。

を作ってみました。だからどうしたという感じですが、GHCではタプルのサイズは62までですよ!!って感じで1つ。ごめんなさい。 module ListAndTuple where import Language.Haskell.TH import Th_Util import GHC.Base $(do return $ map makeLnT [2..62]) …

THその5とかだっけ

そのまま書くと、このクソ記事がググった時に上位に出て来ると困るので略称で。(まぁLanguage.Haskell.THにもなってるからちゃんとした略称ですが) THにはちょっと不便な事に、関数の引数でリストパターンを素直に使う事が出来ません。 例えば tuple2 (a:b:[…

Template Haskellを使ってみる3

listからtupleを生成する関数と、tupleからlistを生成する関数を作ろうと思ったものの型の扱いが上手く行かない・・・。 そんな事は起こる筈無いと思うんだけど・・・良く分からん!!!!!!! 詰まる :t (\y -> $(return (TupE (map (\x -> LitE $ Intege…

TemplateHaskellを使ってみる2

1と殆ど変わらんけど、前進が大事。 $(do return [FunD (mkName "th_test") [Clause [(LitP $ IntegerL 0)] (NormalB $ LitE $ StringL "zero!") [], Clause [(VarP $ mkName "a")] (NormalB $ LitE $ StringL "other") []]]) これは次のコードと等価 th_tes…

Template Haskellを使ってみる1

何で動いたのかは分からないけど、取りあえず次のコードが動いたのでペタリ import Th_Test1 main = print (th_test 10) th_test_main.hsとしてでも保存しておく。 module Th_Test1 where import Language.Haskell.TH -- th_test a = a $(do return [FunD (m…

GHCのタプルの取り扱いに関して

A 100-tuple is too large for GHC (max size is 62) Workaround: use nested tuples or define a data typeこんなのが出てきた。 で調べてみると、 第14章 既知のバグと問題点 ほえーこれは初耳。

高速道路とかに乗る前にさ

http://www.hyuki.com/yukiwiki/wiki.cgi?WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux こういうのにドキドキして楽しんだ方が良いと思うんだけど。

Scalaパズル

を素早くHaskellで解く。via http://d.hatena.ne.jp/kmizushima/20080826/1219723302 take3 [] = "" take3 (a:b:[] ) = (td_show a) ++ (td_show b) ++ td_nbsp ++ " </tr>\n" take3 (a:[] ) = " <tr>\n" ++ (td_show a) ++ td_nbsp ++ td_nbsp ++ " </tr>\n" take3 (a:b:c…

メモ

http://www.progmatism.com/software/kamen/index.php

Dynamicな事をしだした

RubyからHaskellのコードに変換(別にRubyじゃなくてDynamicな言語で)するのってどうしてやろうとかいう事を考えていたので、愚直にData.Dynamicはどうだろうかとか。 HaskellのData.Dynamicは、取りあえず値をDynamicで包んで、後で取り出してあげましょうと…

これはおもろいw

コメント欄も含めて。というかコメント欄が。 http://pybites.blogspot.com/2008/08/php-python-12-years.html

忘れないように

サンマーメンが、中学生の頃執拗に食べたかったのを思い出したので、今度食べる。 いやむしろ、鎌倉にも行きたい。

画像だけは見た

The most important programming language | CompSci.ca/blog