komorebikoboshiのブログ

プログラミング記事(趣味レベル)が多め。

超簡単にMediaWikiをローカルで使えるようにする方法

注意
セキュリティ的にかなり問題がある方法だと思うので、普段はパソコンがインターネットにつながっていないという奇特な人*1のみ試してみてください。あと動いたのを確認したぐらいなので実用できるかはわかりません。

*1:私のことです

続きを読む

新しめのHaskellでWhitespaceをコンパイルする

プログラミング言語Whitespaceの本家サイトからHaskellで書かれたインタプリタソースコードがダウンロードできますが、これをDownload Haskellから手に入れた最新のGHCでコンパイルしようとしても、なんかエラーが出てコンパイルできないですよね。そんなときは、
main.hs29行目の

import System(getArgs)

import System.Environment(getArgs)

に、VM.hs3行目の

import IO

import System.IO

に変更するとうまくいきます。

ghc -o whitespace main.hs

とかすると実行ファイルができます。

Seq.existsのお話

えーと、SORAHANEの次回作のティザーサイトが公開されましたね。
SORAHANE -ソラハネ-(リンク先18禁)
とりあえず英語苦手なんで日本語情報を待ちます(お
まだおまけシナリオやり終えてないんだよなあ。
それはおいといて。
F#にはSeq.existsという*1「シーケンスの中に一致する要素があればtrueを返す」関数がありまして。私ずっとそれは

Seq.exists 3 {1 .. 5} (* まちがい *)

という風に調べたい値を直接指定するのだと思ってたんですが、実際のシグネチャ

val exists: predicate:('T -> bool) -> source:seq<'T> -> bool

という風に真偽値を返す関数を指定するんですね。

Seq.exists (fun x -> x = 3) {1 .. 5} (* せいかい *)

えーめんどくさいなー、と思ったんですが、よく考えたら

Seq.exists ((=) 3) {1 .. 5}

これでよかった。*2

*1:List.existsとか他にもいろいろありますがやることは同じ

*2:F#では演算子を()で囲むことで関数扱いできる。で、3を適用してカリー化