はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    ChatGPT

『pages.zick.run』

  • 人気
  • 新着
  • すべて
  • Ichigo Lispコンパイラ完全解説

    75 users

    pages.zick.run

    Ichigo Lispコンパイラ完全解説 はじめに この記事では私がWebAssemblyで書いた Ichigo Lispという LISP 1.5実装のコンパイラのソースコードをすべて解説する。 というのも、最近とあるコンパイラの本を読んで 「説明が特定の実装に基づいてる割にそのソースが一部しか載ってない」 という不満を感じたのだが、自分で書いたコンパイラの記事 を読み返してみると、コンパイラのソースコードが一切出てこないことに気づいた。 こんな記事を書きながらよく人様の本に不満を持てたものだと 瀬戸内海より深く反省したので、 ここにIchigo Lispのコンパイラのすべてのソースコードを解説する。 想定読者とか Ichigo Lispのコンパイラは(ほとんど)すべてLISP 1.5で書かれている。 LISP 1.5特有のややこしい機能などは使っていないので、 Common Lisp、S

    • テクノロジー
    • 2023/09/18 18:35
    • Lisp
    • WebAssembly
    • コンパイラ
    • Compiler
    • あとで読む
    • プログラミング
    • programming
    • techfeed
    • 開発
    • Googleスプレッドシートの名前付き関数でLISPインタプリタを作った

      42 users

      pages.zick.run

      Googleスプレッドシートの名前付き関数でLISPインタプリタを作った はじめに こんなの を作った。 エラーチェックをサボっていたり、 少し複雑な計算をすると途中で打ち切られたりするが、 それなりに遊べるはず。 Googleスプレッドシートとは Googleスプレッドシートはいわゆる表計算ソフト。 表に色々入力したり、色々計算させたりする。 =SUM(A2:A10) とか書くと2行A列から10行A列までの合計を計算してくれたりする。 スクリーンショットを貼り付けるためのソフトではないはず。 名前付き関数とは Googleスプレッドシートには前述のSUMの他にも色々関数があるが、 ユーザが自分で新しい関数を定義することもでる。 例えばNの階乗を求める関数を定義してみよう。 メニューの [データ] - [名前付き関数] を選択し、 [新しい関数を追加] をクリック。 [関数名] に FA

      • テクノロジー
      • 2022/10/01 13:49
      • Lisp
      • google
      • 開発
      • programming
      • webサービス
      • あとで読む
      • ネタ
      • C++のテンプレートでLISPを作った話

        3 users

        pages.zick.run

        C++のテンプレートでLISPを作った話 はじめに 1年半ほど前、C++のテンプレートでLISPを実装した (コード)。 C++コードの「コンパイル時」にLISPが動くというものだ。 実行時にはコンパイル時に作られた文字列定数を表示するだけだ。 どう作ったか覚えているうちに日本語の文章を書こうと思っていたのに、 すっかり時間が経ってしまいもはやほとんど覚えていないが、 完全に忘れてしまう前に何かしら書いておこうと思う。 超高速C++テンプレート入門 C++に詳しくない人向けにテンプレートのすごく雑な説明をする。 私自身C++に詳しくないので、多分に間違いが含まれているだろう。 C++に詳しい方は生暖かい目で見守ってほしい。 単純な型 C++の変数には型がある。 整数型の変数には整数しか代入できない。 文字列型の変数には文字列しか代入できない。 int n = 42; // 整数型の変数 s

        • テクノロジー
        • 2022/09/06 21:25
        • R5RSのformal semanticsをOCamlで書いた

          3 users

          pages.zick.run

          R5RSのformal semanticsをOCamlで書いた 背景 bitのバックナンバーを読んでいたら見つけた 「プログラム検証入門」という記事(1980年9月〜12月号掲載)が非常に面白かった。 その記事に参考文献として載っていた 「数理情報学入門―スコット・プログラム理論」という本を買ってみたら、 これまたすごく面白かった。 この本で使っている記号が、R5RSのformal semanticsで使っている記号と 大体同じであることを思い出し、R5RSのformal semanticsを読み直してみたら、 以前よりしっかり理解できて、これまた非常に楽しかった。 楽しかったのだが、 call-with-valuesの定義 がおかしいことに気づいた。 cwv: E* -> K -> C [call-with-values] cwv = twoarg(λε1ε2κ.applicate ε1

          • テクノロジー
          • 2022/05/17 20:24
          • Scheme
          • WebAssemblyでLISPインタプリタを書いた

            5 users

            pages.zick.run

            WebAssemblyでLISPインタプリタを書いた WebAssemblyでLISP 1.5の処理系を書いた。 超高速WebAssembly入門 まずは このページ を読もう。 WebAssemblyのデータ型 WebAssemblyには基本的に整数型と浮動小数点数型しかない。具体的には i32, i64, f32, f64 の4種類。 文字列はC言語のように整数の並びとして表現する。 WebAssemblyのメモリ WebAssemblyにはデータを置く場所として、 スタック、ローカル変数、グローバル変数、メモリがある。 メモリはアドレスを介したアクセスができる。 逆に言えばスタック、ローカル変数、グローバル変数はアドレスを取得できない。 アドレス経由でアクセスしたいものはメモリに置く必要がある。 ;; 初期値0のグローバル変数 (global $gp (mut i32) (i32.c

            • テクノロジー
            • 2022/03/20 14:23
            • WebAssembly
            • Lisp
            • あとで読む
            • WebAssemblyのgotoを妥協する

              3 users

              pages.zick.run

              WebAssemblyのgotoを妥協する 前回のあらすじ: WebAssemblyでgotoを作ろうとしたらめっちゃ大変。 (loop $loop (if (i32.gt_u (local.get $next) (i32.const 0)) (then (local.set $jump (local.get $next)) (local.set $next (i32.const 0)))) (block $block2 (block $block1 (br_if $block1 (i32.eq (local.get $jump) (i32.const 1))) (br_if $block2 (i32.eq (local.get $jump) (i32.const 2))) (call $code1) (if (call $test1) (then ;; Forward super jum

              • テクノロジー
              • 2022/03/12 20:44
              • WebAssembly
              • HTML5
              • techfeed
              • Portable PrologをCommon Lispで動かした

                4 users

                pages.zick.run

                Portable PrologをCommon Lispで動かした bit 1982年05月号『Prolog入門(2)』に Portable PrologというLISPで書かれた小さなProlog処理系が載っている。 “Portable” という名前の通り色々な環境で動かすことを前提としており、 ほぼLISP 1.5の機能のみで書かれているため移植が簡単にできるようになっている。 これを少し書き換えてCommon Lispで動かした。 移植の方針 今回は「もとのプログラムを極力書き換えない」という方針で移植することにした。 コードを読んでいると prog を let に書き換えたり、 cond を when に書き換えたりしたくなるような箇所が多々あるが、 そういった気持ちをぐっとこらえ、最小限の変更のみを行った。 実際に変更した箇所 もとのコードが150行ほど。 これに対して変更したのが1

                • テクノロジー
                • 2022/01/27 12:58
                • 「コンパイラ: 原理と構造」の型推論をClojureで書いた

                  4 users

                  pages.zick.run

                  「コンパイラ: 原理と構造」の型推論をClojureで書いた コンパイラ: 原理と構造 という本を読んだ。最近は本の内容を3秒ほどで忘れてしまうので、 少しでも記憶を定着させるため手を動かすことにした。 大昔に決定性有限オートマトンを作ったり、 LALR構文解析器を作ったりするプログラムを(Common Lispのマクロとして) 書いたことがあるので字句解析と構文解析はすっ飛ばして、 いきなり型推論をするプログラムを書くことにした。型推論を書くのは初めてだ。 本ではSML#を使っているが、「最も稼げる言語はClojure」という噂を聞いたので Clojureで書いてみることにした。Clojureを書くのも初めてだ。 できあがったもの user> (type-inf-defs '((def fdec (fn p (tuple (- (get p 0) 1) (get p 1)))) (def

                  • テクノロジー
                  • 2021/10/19 23:45
                  • あとで読む

                  このページはまだ
                  ブックマークされていません

                  このページを最初にブックマークしてみませんか?

                  『pages.zick.run』の新着エントリーを見る

                  キーボードショートカット一覧

                  j次のブックマーク

                  k前のブックマーク

                  lあとで読む

                  eコメント一覧を開く

                  oページを開く

                  はてなブックマーク

                  • 総合
                  • 一般
                  • 世の中
                  • 政治と経済
                  • 暮らし
                  • 学び
                  • テクノロジー
                  • エンタメ
                  • アニメとゲーム
                  • おもしろ
                  • アプリ・拡張機能
                  • 開発ブログ
                  • ヘルプ
                  • お問い合わせ
                  • ガイドライン
                  • 利用規約
                  • プライバシーポリシー
                  • 利用者情報の外部送信について
                  • ガイドライン
                  • 利用規約
                  • プライバシーポリシー
                  • 利用者情報の外部送信について

                  公式Twitter

                  • 公式アカウント
                  • ホットエントリー

                  はてなのサービス

                  • はてなブログ
                  • はてなブログPro
                  • 人力検索はてな
                  • はてなブログ タグ
                  • はてなニュース
                  • ソレドコ
                  • App Storeからダウンロード
                  • Google Playで手に入れよう
                  Copyright © 2005-2025 Hatena. All Rights Reserved.
                  設定を変更しましたx