タグ

ブックマーク / rst76.hatenablog.com (6)

  • Hello, world! ふたたび - Life Goes On

    R 教授による S 大学での講義録。 はじめに えー、前回の講義からだいぶ間が空いてしまったが、講義を始めたい。 今回はクワインについて話す予定であったが、その前にもう一度だけ Hello, world! について話をさせてほしい。 前回の講義の直後、irori 氏によって、399bytes の Hello, world! の存在が証明された。 その詳細について氏は何も語らなかったが、今年の 7 月になってソースコードが公開された。 それを解読した結果、および解読の過程で新たに得られた知見について、今回の講義では話をしたいと思う。 ロジックの見直し(451) 前回の講義で "Hello, world!" という文字列に対応するチャーチ数を得るため、 <27> + f <73> <81>という式を提示した。だが、どうやらこれは少々複雑に過ぎるようである。 <28> + f <80>という式の

    Hello, world! ふたたび - Life Goes On
    youz
    youz 2013/11/11
    またキリの良い数字に
  • 究極の関数型言語による至高のHello, world! - Life Goes On

    以下の記事は、 R 教授による S 大学での講義録を Haskell Advent Calendar 2012 のために転載したものである。 はじめに えー、それでは、今年最後の授業を始めたいと思う。今日は『究極の関数型言語による至高の Hello, world!』について講義することにしたい。 “究極”の関数型言語が何であるかについては諸説あろうが、ここでは SKI コンビネータ計算を指すものとする。また“至高”の定義を、最も簡潔であること、すなわち最も短く記述されていることと定める。 諸君は第一プログラミング言語として Haskell を選択している者がほとんどであろう。当初この講義も Haskell をベースに行おうと考えていた。だが、Haskell は非常に巨大な言語となってしまっており、言語仕様を把握するだけでも難しい。だいたい STG が Spineless Tagless G

    究極の関数型言語による至高のHello, world! - Life Goes On
    youz
    youz 2012/12/05
    4~500台の人は一体どうなってんだと思ってたけど、51b数なるほどなー
  • Function call expression 参戦記 - Life Goes On

    公私ともにバタバタしていて、blog も twitter も放置していますが、どうにか生きてます。 anarchy golf - Function call expression に関して、youzさんが解説を書けと言ってるので、2位という立場で僭越ながら書いてみる。 2週間前に問題を見て、なんて好みの問題だろうと思い、誰も参加してないけど submit。 こういう処理系ちっくな問題のときはだいたい、Parsec で考えを整理してから実装してる。今回もまずParsec で下書き。 import Text.ParserCombinators.Parsec m @ main = getLine >>= putStrLn . either show id . parse expr "" >> m expr = do f <- char 'f' xs <- many $ do char '(' e

    Function call expression 参戦記 - Life Goes On
    youz
    youz 2011/05/24
    ありがとうございます。ありがとうございます。
  • Grass のインタプリタを書いてみたよ - Life Goes On

    Haskell で Grass のインタプリタを書いてみました。以前から書いてみたいとは思っていたのですが、どこから手をつければいいものやら分からず、半年近く経ってしまいました。悲願達成。 Haskell 版は既に mr_konn さんが書いているので、目新しいものではありません。あくまでも自分のため。 とりあえず動くものはできたのですが、まだまだ改善の余地がありそう。悩んでいるのはこんなところです。 サンプルの「はいはいわろすわろす」を動かしたい(Shift_JIS とかでの出力もしたい)ので、UTF-8 モジュールは使っていません。そうすると自前で全角文字のハンドリングをする必要があります。UTF-8 なり Shift_JIS なり EUC-JP なり決め打ちで変換することになりそう(関数 filter')なのですが、もうちょいスマートなやり口はないものでしょうか。あと String

    Grass のインタプリタを書いてみたよ - Life Goes On
  • 今日のコード - Life Goes On

    // もともとのコード sql.append("SELECT * FROM A WHERE "); // 障害-XXXX対応 以下3行追加 if (hogehoge) { sql.append("0 = 1 "); } :ある条件のときだけ、検索結果を0件にしたかったようです。 まさにパッチと呼ぶに相応しい、最低な継ぎ接ぎコード。 はい、僕が書きました。 ごめんなさい。

    今日のコード - Life Goes On
    youz
    youz 2008/11/20
    "~ where false "って書いておいてから" or ~"を付け足していくってのは良くやります
  • Hello, world! - Life Goes On

    Hello, world! ができました。613B!やた! wvwwWWwWWWwvWwwwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwWwwwwwwwwwwwwWWWWwWWWWWWWwWWWW WWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWwwWWWWWWWWWWWWwWWWWWWWWWWwwWWWWWWWWWWwwwwwwWWW WWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWwwWWWWWW WWWWWWWWWWWwwwwwWWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWW WWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwWWw

    Hello, world! - Life Goes On
    youz
    youz 2008/10/01
    おおお素晴らしい。冪乗使えば勝つる! と思ってチャーチ数ベースで書いたんだけど、普通に文字ベースでやる方が短いし速いしわかりやすいなぁ。
  • 1