2007-10-01から1ヶ月間の記事一覧

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

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>

頭の悪いmakefile

あれー、おかしいなー。GNUツールとは別れられたはずなのに。

頭の悪いformat

OCamlの自慢らしいタイプセーフprintf。 型がついているということはcamlp4では無くてOCamlの構文の上に乗っているということですよね……。 # Printf.printf "%d";; - : int -> unit = <fun> # Printf.printf "%d %d";; - : int -> int -> unit = <fun> # Printf.printf</fun></fun>…

隣の芝

F#の|>は便利そうだなー。F#は普通にlet mutable等と書けて良さげ。本家もこれぐらい割り切って欲しい。 あとHaskellの$が欲しい。

Polymorphic variant and record

「Modulaはレコードも含めて全部Structured Typeだったのに惜しい」の部分は、どうもPolymorphic recordで実現されるらしいが、よくわかりません。http://d.hatena.ne.jp/h_sakurai/20070311http://moscova.inria.fr/~zappa/teaching/stt05/types-3.pdfhttp:…

Stream.fromとクロージャ

特にこうやってその場でstatic変数モドキができるのは覚えとこう……。Haskellでは考えられないし(できるけど普通はやらない←ツッコミ避け)、クロージャがスタックに縛られているDやAdaでも考えられず、今までに経験してこなかったパターンなので。 # let s = …

私的OCaml

http://d.hatena.ne.jp/shinichiro_h/20050602#1117704889 id:shinichiro_hさんとこなどを見て、私的にOCamlに思うところを。(以下完全に私見というか、私にOCamlがどう見えているか、です) OCamlは素晴らしい言語だと思います。私的には気に入らない箇所も…

ocamlyaccとocamllex

実はyaccをまともに使ったことが無かったりする私ですが、ドキュメントの例にエラー処理を追加してみました。 /* File parser.mly */ %{ let parse_error (z : string) = print_string z; print_string " at ";; let print_pos p = print_int p.Lexing.pos_l…

GMP

なんか使えるようになったらしい。 MinGWもVisualC++も両方COFFなもので、MinGWでビルドしたlibgmp.aとlibmpfr.aを無理やりリンクしてgccから_chkstk.oだけ持ってきたらひとつの.dllにできちゃいました。

だんだんわかってきた

ocamloptで.cmxaを作るときにCライブラリを使いたい場合は-cclibを使う。Objective Caml\lib以下にlibxxxx.libを置く。 ocamlcで.cmaを作るときにCライブラリを使いたい場合は-dllibを使う。Objective Caml\lib\stublibs以下にdllxxxx.dllを置く。.dllを作っ…

何もしない関数

Ada

単項"+"演算子は、定数の宣言に便利です。 function PI(X : Integer := 3) return Integer renames "+"; function PI(X : Float := Ada.Numerics.PI) return Float renames "+"; これでPIと書くだけで、Integerが要求される場面では3を、Floatが要求される場…

GMP

最近ようやくタイプ量が少ないことは重要であることに気付きまして、ネイティブで型推論があってスクリプトのようにも使えるPascalに良く似た手続き型言語ことOCamlを始めようとしたのですが、MinGW版とVisualC++版はどちらがいいんだというところで詰まって…

例外

エラーコードをcaseで全列挙しているか照らし合わせるかったるいことをやってたんですが、もしエラーコードを追加するときはこの労力全部無に帰すのかよと思うと、だから継承のある言語では例外処理は継承でやってんだと超今更納得した次第です。

同士発見

http://d.hatena.ne.jp/nullpobug/20071022#c1193023687

銀猫魔天いまんとこ入ったばっか

すすんでない。なんか書いとかないと中断2週間とかになって全く思い出せないまま死ぬから困る。 やっぱここはサトリの盾を作るべきなのか。まだ倉庫にも未登録ですし。

はてなダイアリーの他人の日記でタイトルをクリックしたらソースが見えてびびった。

記事がインライン編集できるようになったのですね。テスト。

Named return

gcc

これまで散々Result変数方式やbuild-in-placeの利点を説いてきたのですが、なんとg++には既に実装済みでした。 struct result_t { int data_1; int data_2; }; result_t func() return result(1, 2) { ... }試そうとしたらとっくにremovedになってました。 …

どうでもいいが

vampire.cgiよりwf_regi.cgiの方がリクエスト数が多いって明らかに(ry Web Forum改造版のスパム対策は優秀だなあ……。

君はEQV演算子を知っているか!?

私は知りませんでした。↓の右のように書いても一緒ですし。Fortran由来でしょうか?FortranではXORも.NEQV.らしい。 A=B XOR C=D (A=B)<>(C=D) A=B EQV C=D (A=B)=(C=D) A=B IMP C=D (A=B)>=(C=D)*1 *1:BASICでは真は-1←ビット演算子で論理演算できるため大…

幽幻魔天いまんとこ16Fぐらい

に限らず仲間誰か一人ってヘイジしか有り得ないと思うのですがそうでもないのだろうか。特にここは杖をペリカンに投げて貰わないといけないし。 それにしても所持品数制限がきついな……合成の壷がおにぎり入れになる始末。階段のところにおにぎり置いてたら引…

FizzBuzz

追いついた♪ I=1 'for I=1 to 100 *F A=1 if I mod 3 = 0 then ?"Fizz";:A=0 if I mod 5 = 0 then ?"Buzz";:A=0 if A then ?I; ? I=I+1:if I<=100 goto *F 'next ...>basicll -r fizzbuzz.bas 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16…

LLVM用BASICコンパイラを書いていたり

http://panathenaia.halfmoon.jp/basicll/ Quineで3位*1を取るためだけのBASIC処理系です。まだLISTしか出力命令が無いです。LLVMで非効率となるgcc拡張構文のひとつに&&labelがあります。LLVMではローカルラベルのアドレスを取れないため、序数に対応付けて…

スプラッシュを無印のに差し替えたら"Professional"が別のとこに出てかっこ悪い対策

http://d.hatena.ne.jp/ytqwerty/20070922#p3の続き。 5. 置き換えるリソースの画像に、"Professional"の文字を本来の位置に描いておく。6. coreide100.bplのE816E9ECFFを9090909090に置換。 エディションを描画するTCanvas.TextRectの呼び出しを潰しただけ。…

2.1

出ました。 例外使えない。デバッグ情報おかしい。 しかしMinGW用バイナリが公開されているので、ビルドの必要が無くなったのが大きいです。 .aは付いてきて無いため、やっぱりLLVMはテキストで扱えということか。