3

私は C の他の言語との相互運用性と妥当なパフォーマンスを必要とするライブラリ プロジェクトを持っていますが、文芸的なプログラミングのように非常に明確に文書化する必要があり、その文書化は Haskell やIdrisの証明機能の ような関数型アプローチの恩恵を受ける可能性があります。

したがって、私はこのライブラリを読み書き可能なプログラムとして構築することに興味があります。最初にドキュメンテーションを作成し、Idris プロトタイプ コードを動作させます。次に、パフォーマンスの問題に対処し、他の言語から簡単にリンクできるように Idris コードと密接に類似する C コードを作成します。

どの文芸プログラミング ツールが必要ですか?

NuWebは多言語の読み書き可能なプログラミング用に設計されていますが、@ 記号や実際のエスケープ文字の使用は、Idris、Haskell などの関数型言語では問題があります。

Idrisは、私が貢献できる読み書きのできるプログラミング ツールを求めています。ブロックで区切られたファイルを使用するという彼らの好ましいアプローチが気に入っています。.tex\begin{code} .. \end{code}

Idris、Haskell などは、C のようにもつれを必要としないため、複雑さが増すため、ここで使用しているツールはそのまま使用することをお勧めします。

ライブラリ コンシューマー向けのツールを最小限に抑えるアプローチは、次のような単純な Perl スクリプトを使用して C および Idris コードを抽出することですcat_latex_env

#!/usr/bin/perl
use strict;
use warnings;

sub usage { die "Usage: cat_latex_env enviroment_name [filename]\n"; }
usage if ($#ARGV < 0);

my $env = shift;
my $begin = quotemeta "\\begin{$env}";
my $end = quotemeta "\\end{$env}";
while (<>) {
        if (/$begin/../$end/) {
                next if /$begin/ || /$end/;
                print;
        }
}

その時点で、Idris は正常にコンパイルされるはずです。そして、CWEB や NuWeb のような C 用の文芸的なプログラミング ツールに必要なタングル命令を埋め込むことができました。

考え?

4

1 に答える 1