Movatterモバイル変換


[0]ホーム

URL:


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

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

アプリで開く

はてなブックマーク

タグ

関連タグで絞り込む (3)

タグの絞り込みを解除

型に関するzyzyのブックマーク (2)

  • Haskellで型レベルパーサー

    ghc-9.6.1です。 GHCはChar kindが9.2で入ったので型レベルパーサーが書ける様になってるんですよね。ということで書いてみました。 BNFは以下です: expr ::= term *('+' term) term ::= factor *('*' factor) factor ::= '(' expr ')' | nat nat ::= 0 | 1 | 2 | ... | 9 {-# Language TypeData #-} {-# Language DataKinds #-} {-# Language TypeFamilies #-} {-# Language UndecidableInstances #-} {-# Language TypeApplications #-} {-# Language MagicHash #-} {-# LANGUAGE NoStar

    Haskellで型レベルパーサー
    zyzy
    zyzy2023/04/12非公開
    魔境……
    • Rustで型レベルプログラミング

      はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

      Rustで型レベルプログラミング
      zyzy
      zyzy2022/09/05非公開
      みんな大好きな奴
      • 残りのブックマークを読み込んでいます1

      お知らせ

      公式Twitter

      • @HatenaBookmark

        リリース、障害情報などのサービスのお知らせ

      • @hatebu

        最新の人気エントリーの配信

      処理を実行中です

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

      j次のブックマーク

      k前のブックマーク

      lあとで読む

      eコメント一覧を開く

      oページを開く

      はてなブックマーク

      公式Twitter

      はてなのサービス

      • App Storeからダウンロード
      • Google Playで手に入れよう
      Copyright © 2005-2025Hatena. All Rights Reserved.
      設定を変更しましたx

      [8]ページ先頭

      ©2009-2025 Movatter.jp