タグ

ブックマーク / qiita.com/Pctg-x8 (3)

  • Dhallの型定義からRustの型を自動生成するマクロ - Qiita

    Dhallという面白くて強い設定記述言語とRustに存在する最強なプロシージャルマクロのお話です。 Dhallについて Dhallとは設定記述言語の一つです。要するにINIやJSONやYAMLといったものの一種になります。 Dhallはそうした設定記述言語の中でも、変数が使えたり関数が使えたりと突出してマンフレンドリーな機能を多く備えています。 その一方でチューリング不完全であり、ざっくりというと式の評価が必ず停止します。設定ファイルを読み込んだら記述をミスって無限ループになって初期化フェーズで死んだなんてことになると大変ですので、必ずとある形で評価が停止してくれるというのは設定ファイルとして採用する際に安心できるポイントです。 Haskellよろしくインデントベースな構文であることと、書き方が多様にわたるためプログラムから生成する設定ファイルのフォーマットとして扱うには少し厳しいところが

    Dhallの型定義からRustの型を自動生成するマクロ - Qiita
  • HaskellでもDirectX12したい! - Qiita

    描けた! pic.twitter.com/3h0Jtmlw7U — 🌌S.Percentage🙀 (@Pctg_x8) September 15, 2020 リポジトリはこちら: https://github.com/Pctg-x8/haskell-d3d12-test HaskellのFFI 今回はDirectX12に主軸をおいた記事ではないため、DirectX12の初期化の方法などは解説しません。他の記事をご参照ください。 Haskellも実用的なプログラミング言語の例に漏れず、C言語など他の言語とのインターフェイス(FFI)の仕組みを持っています。 Haskellのそれはかなり「低レベル」かつ「なんでもあり」な感じになっています。 HaskellのFFIの詳細については他の記事を参照してもらうとして、大雑把には以下のような形でインターフェイスが提供されています。 基データ型 F

    HaskellでもDirectX12したい! - Qiita
  • Rustでも(そこそこ)安全なグローバルインスタンスを使いたい - Qiita

    同じ記事を別のカレンダーに登録できないことに気づいて必死にネタを探しました。 うちのソフトウェアで必要に駆られて製作したappinstanceクレートを少し前に切り出して正式にpublishしたのでその紹介です。 つかいかた appinstanceは主にアプリケーションの実行と同じライフタイムを持つ唯一のオブジェクト(つまりシングルトン)を定義するためのライブラリです。 appinstanceの実態はひとつのマクロなので、利用は次の一行を追加するだけでおしまいです。 AppInstance!(pub static instance: SelfObject = SelfObject::new()); staticとDrop Rustにはすでにstaticというキーワードが存在しており、これを使うとアプリケーションと同等のライフタイムを持つデータを定義することが可能になっています。ただしこの定

    Rustでも(そこそこ)安全なグローバルインスタンスを使いたい - Qiita
    igrep
    igrep 2017/12/14
  • 1