haskellとlanguageに関するpropellaのブックマーク (4)

  • 末尾再帰に絶望した! - lethevert is a programmer

    Haskellはデフォルトで遅延評価ですから、実装に関することは全部後で書くことになっているのですよ。 - 普通(って何が普通か知りませんが、私が普通だと思っている普通)は、末尾再帰の最適化というのは、次のような疑似アセンブリが FUNC_A: いろいろ処理 CALL FUNC_B RETというところを、CALLのあとすぐにRETだからこれってJMPで置き換えられるよね、ということで FUNC_A: いろいろ処理 JMP FUNC_Bとなることや、CPS(ちゃんと勉強してないので気分だけですが)で書いたときに (define (func-a cont) いろいろ処理 (func-b (lambda () (cont)))) というところを、func-bの引数のlambdaって要らないよね、ということで、 (define (func-a cont) いろいろ処理 (func-b cont))

    末尾再帰に絶望した! - lethevert is a programmer
  • J[funcgui]

    C++の好きな指定子が inline で、inline は「インライン展開する」という意味ではないというのが好き。 「インライン展開する」という意味で inline を使うとしたら、 #include <stdio.h> #include <stdlib.h> inline int fibonacci(int x) { if (x <= 1) { return x; } return fibonacci(x-2) + fibonacci(x-1); } int main(int argc, char **argv) { printf("%d\n", fibonacci(atoi(argv[1]))); } こういう再帰がいるような関数だとインライン展開できずにエラーになるはずである。 実際にはもちろんこれはエラーではない。 仕様を読んだことはないので厳密な定義は知らないが、inline

    J[funcgui]
    propella
    propella 2007/08/05
    素晴らしい再発明
  • Write Yourself a Scheme in 48 hours

    Write Yourself a Scheme in 48 Hours A Haskell Tutorial By Jonathan Tang Contents Overview First Steps: Compiling and running Parsing A Simple Parser Whitespace Literal Numbers and Strings: Return Values Lists, Dotted Lists, and Quoted Data: Recursive Parsers Evaluation, Part 1 Displaying Values: Show and Typeclasses Evaluating Primitive Values: Pattern Matching Evaluating Primitive Functions: Firs

  • はてなブログ | 無料ブログを作成しよう

    【自分語り】1推しの卒業によせて . 私の1推し、ゆきりんこと柏木由紀ちゃんが、17年に渡り在籍したAKB48を卒業することになった。 この機会に、ゆきりん推し(48ファン)としての自分自身のことをすべては不可能であるものの振り返ろうと思う。 内容からして世代がわかることも仕方ないし、限りなくゼ…

    はてなブログ | 無料ブログを作成しよう
    propella
    propella 2007/05/27
    「文法も Prolog と Haskell をほどよく混ぜ合わせた感じ」
  • 1