我有一个库项目,它需要 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 编程工具所需的 tangle 指令。
想法?