我有一个库项目,需要C与其他语言的互操作性和合理的性能,但必须非常清晰地记录,如文学编程一样,并且其文档可能受益于函数式方法,如Haskell,甚至是Idris的证明功能。
因此,我有兴趣将此库构建为文学程序,首先编写文档并使用Idris原型代码,然后编写C代码,以尽可能接近Idris代码来解决任何性能问题,并易于从其他语言进行链接。
我想要哪种文学编程工具? NuWeb专为多语言文学编程而设计,但他们对于像Idris、Haskell等函数式语言的@符号或任何转义字符的使用存在问题。
在这一步,Idris 应该可以成功编译。我可以嵌入文学化编程工具(如 CWEB 或 NuWeb)所需的交织指令。您有何想法?
因此,我有兴趣将此库构建为文学程序,首先编写文档并使用Idris原型代码,然后编写C代码,以尽可能接近Idris代码来解决任何性能问题,并易于从其他语言进行链接。
我想要哪种文学编程工具? NuWeb专为多语言文学编程而设计,但他们对于像Idris、Haskell等函数式语言的@符号或任何转义字符的使用存在问题。
Idris希望有一个文学编程工具,我可以为其做出贡献。我喜欢他们的首选方法,只需使用由\begin{code} .. \end{code}
块限定的.tex
文件。
Idris、Haskell等不需要像C一样进行交错,因此这样做会增加复杂性,我更希望在这里使用的任何工具都能够保持稳定。
一种最小化库消费者工具使用的方法可能是使用一个简单的Perl脚本cat_latex_env
来提取C和Idris代码:
#!/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)所需的交织指令。您有何想法?