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

頭の悪いrec

こないだ、rec付けた時に仕方がないから()を……ってやってましたが、lazyでいいことが判明。lazyのほうが2回目以降の評価がいらないので確実にいいですね。 # let rec a = 1 and b = a;; Characters 22-23: let rec a = 1 and b = a;; ^ This kind of express…

帰り着いてみたら駅伝がもう26人目の件

明日も仕事だぜこんちくしょう。

Professional潰すとこ

20A69A59 E8D6E8ECFF call $20938334

月配列 Yx/Chasse-neige

Key

裏面をちょっとだけ入れ換えました。 で、バージョン名に使ってた超絶技巧練習曲の名前使い果たしましたので、ちょっとしたまとめとしてYxのページ作りました。パクリ度全開です、ごめんなさい。 http://panathenaia.halfmoon.jp/key/tsuki-yx.html ……どうせ…

頭の悪いモナド

モナドを使いやすくするdo構文はHaskellの専売特許です。a >>= (\b -> c >>= (\d >> return e))がdo b >=演算子を連ねた場合、本当は匿名関数をネストしまくってるところを、平坦に書けることですね。 では、匿名関数に括弧が要らなかったら……do構文いらない…

Delphi2007のヘルプから要らないものを外す

http://lachlan.gemmell.com/programming/2007/10/no-intraweb-9-help-in-crs-2007.html 後で試す。C++Builderはこれでよさそうですが、.NET SDKは記法というか取り込み方が違うっぽいのでどうでしょうか。 メモ帳の中に開くってのはopen inside Notepadなん…

pragma Favor_Top_Level

──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Favor_005fTop_005fLevel.html#Pragma-Favor_005fTop_005fLevel サブプログラムへのaccess型をトップレベル専用にしてネストされた関数にはトランポリンで対応するら…

pragma Fast_Math

──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Fast_005fMath.html 規格上保たないといけない精度とか無視して突っ切るためのpragmaらしい。 紛らわしいですがきっと-ffast-mathとはなんの関係も無いです。そもそも…

GolfScriptに嫉妬

対抗して考えてみる。 プログラミング言語"gzip" このインタプリタがソースコードを解釈して出力する結果は、ソースコードと同一のバイナリイメージを持つ圧縮ファイルをgzipで展開した結果と一致する。ただしSample Outputが2個ある問題は解けない。 プログ…

鋼賀の隠し穴で点数をプラスにするには……

普通にやってるつもりなのですが、点数がマイナスになります。 まずクリアで100万点。 ターンボーナスは25000×50=125万点から引かれていくらしいです。さっき半分ぐらいのフロアを透視&一時しのぎの杖で階段探して場所替えの杖もそこそこ使って、で、もう10…

PascalはLL(1)じゃないよね

http://d.hatena.ne.jp/kmaebashi/20071203#p1 手続き名をlexerが認識するとかどこのBASICでしょうか。Pascalはそんな事してないと思……いやまてよ。 WriteLn(x: 10); ↑こんな、Write/WriteLn中でしか使えない特殊構文がある以上、手続き名をlexerが認識して…

続・頭の悪いパーサコンビネータ

あれからだいぶ直してしまったので1から説明します。YT版Parser Combinator for OCaml……どう見てもHaskellやCleanのそれの劣化版ですが。 ええと、まず、今更言うまでもないですがパーサコンビネータというのはパースする関数とパースする関数をくっつける関…

頭の悪いコメント

最近ようやく、(* *)の打ち方がわかってきました。 (*は中指→人差し指、*)は人差し指→中指か薬指(気分次第)で打ちます。 このとき、位置はあくまで*基準で覚えておくと間違えにくいようです。 ……Pascalが{ }を使うようになったのは正解と思いますというか、…

頭の悪いパーサコンビネータ

普通に再帰下降で書いていたはずが、定型句が面倒になって、関数を作る関数に変えていったらこんなふうになってしまいました。 (* 2.3: identifier ::= identifier_start {identifier_start | identifier_extend} *) let rec identifier () = p_do ( identif…

「あなたが一番好きなアルゴリズムを教えてください」

http://q.hatena.ne.jp/1195950564 via http://www.kmonos.net/wlog/79.html#_0037071127 DDAによる斜線描画が好きです。

月配列 Yx/Harmonies du soir

Key

今はこんな感じで使ってます。 表 せ け ☆ て ょ つ ん ☆ な 半 を は か し と た く う い 濁 れ ー す こ に さ そ っ る き あ ち 裏 ぁ ほ り ふ め む え ま み ぬ ぃ の ら ゅ よ ひ お も わ ゆ ’ へ ぇ ぉ ね ゃ や ろ 、 。 ぅ 点や感嘆符含む記号…

libpngがスタティックリンクできるようになった

http://panathenaia.halfmoon.jp/alang/delphi.html setjmpが必要で、他の言語から使いにくいと言われているlibpngですが、やればできるものです。 インラインアセンブラでC++Builderからsetjmp持ってきただけですがっ。 -DPNG_NO_SETJMP_SUPPORTEDは、壊れ…

男性には「2割高め」、女性には「2割安め」

http://homepage1.nifty.com/bee/diary/2007b.html#d20071108 先に何を見せられたかに関らず、1万2千円と8千円の間で長時間悩みまくった揚げ句、一瞬の気の迷いで千円のを買ったり2万円のを買ったりネクタイを必要としているにも関らず何も買わずに帰ったり…

頭の悪いFormat

参考(元ネタ)→http://d.hatena.ne.jp/soutaro/20060506/1146925290 トップレベルで式を評価してもと出て何もわからないのはとても悲しいのですが、そんなときも#install_printerしておけばなんか出せます。 open Format;; let print_utf8string x = print_st…

頭の悪い最適化してるつもりのコード

OCamlが遅くなる一番の原因はGCらしいです。某.NETや某JavaみたいにGCが他のアプリケーション用のメモリを食い潰すような実装にはなっていない良心的なGCらしいことは評価していいと思いますが具体的にどうなのかはさっぱり知りません。 ↑のコードでは、いち…

新しい構文

camlp4上の改訂版構文とやらを使ってみた。

更に頭の悪いUTF9

Adaでもビット操作の方が短くなった。言語の得意分野ですらこの始末……。 こりゃUTF-9が普及しても、Adaの普及は望めませんね……。 先に検証しとけよって話だ。 死にたくなったので銀猫行ってきます。

頭の悪いUTF9

試しにDで書いてみたら普通にビット操作のほうが短かった。こりゃスクリプト言語なら100バイト切るな……orz バイト境界をまたぐpacked配列が使えないと長くなるはずという単なる思いこみオチでした。終了。

packed UTF9

もう露骨にAdaのLanguage Rankingを上げるためだけの問題を出題しました。正直ごめんなさい。 ieee754では予想外にRubyが短かった*1ものの、なんとかCに一位をキープして貰えてスクリプト言語を落とす目標は達成。 まあそんなわけで、今回は密かに暖めていた…

隣の芝パート2

Haskellのwhere欲しい。切実。 再帰でループはいいんですが、初期条件を与えるところがループ本体より下になってしまうのがいただけないです。 これはもうcamlp4に手を染めろってことでしょうか?

{OCaml] 頭の悪い無限リスト

Haskellのようなやつ。書いて書けないことはなかった。面倒ですが。 type 'a item = E | S of ('a * ('a inflist)) and 'a inflist = 'a item lazy_t;; let rec take : int -> 'a inflist -> 'a inflist = fun n list -> if n = 0 then lazy E else match La…

頭の悪いレコード

# type t = { x : t };; # let rec z = { x = z };; これを対話環境上で実行すると面白いことに。

忘れる前に書いておきます

LLVM上でlongjmpは危険です。

本当にIntegerと打つのは面倒なのか

普通に。9ストローク。 (shift) i (unshift) n t e g e r入力支援。InputやInt64等近いスペルの識別子多いからinteまで打つとして……8ストローク。 i n t e (ctrl) space (unctrl) enter自分でテンプレート追加するなら i (ctrl) j (unctrl) と4ストローク。…

頭の悪いデフォルト引数

# let f ~z = z;; val f : z:'a -> 'a = <fun> # f "1" 2 ~z:(fun x y -> (int_of_string x) + y);; - : int = 3 ……スタック型言語?</fun>