我有一个库项目需要C与其他语言的互操作性和合理的性能,但必须非常清楚地记录,文化编程,其文档可能会受益于功能方法,如Haskell,甚至{{ 3}}'证明功能。
因此,我有兴趣将这个库构建为一个有文化的程序,首先编写文档并使用Idris原型代码,然后编写与Idris代码非常相似的C代码,以解决任何性能问题,并且可以轻松地与其他语言链接
我想要什么有文化的编程工具?
Idris专为多语言文字编程而设计,但它们对@符号或任何转义字符的使用对像Idris,Haskell等函数式语言来说是个问题。
我可以贡献的Idris NuWeb和wants。我喜欢他们首选使用由.tex
块分隔的\begin{code} .. \end{code}
文件的方法。
最小化库消费者工具的方法可能是使用像cat_latex_env
这样的简单Perl脚本来提取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;
}
}
此时伊德里斯应该编译好。我可以嵌入一个有文化的编程工具所需的纠结指令,如CWEB或NuWeb。
思想?
答案 0 :(得分:1)
如果文档是最重要的,并且你有一些emacs亲和力,那么你可能会比在org-mode中查看文字编程支持更糟糕。 Babel是一个组织模式扩展,允许与许多编程环境集成,包括纠缠编织语言,执行代码块,......
它完全与语言无关,并且由于它具有大纲的DNA,因此它允许以结构化的方式管理文档。当然,它会从您的来源生成突出显示HTML / LateX / PDF / ...的语法。
查看http://orgmode.org/worg/org-contrib/babel/intro.html了解详情。
样本:
** Compiles libpq library for iOS
copy this script as *build-ios.sh* in the root of the postgresql
source tree.
#+BEGIN_SRC sh tangle:build-ios.sh
mkdir -p build
rm -rf build/* #*/
function build_libpq()
{
make distclean
./configure \
...snip...
lipo -create -output libpq.a build/*
#+END_SRC
Run it and it will create a universal library and separate arm
library in the root folder.
我希望这能让我们了解如何使用org-mode / Bable组合创建文档/代码。当然,stackexchange答案不能开始划伤这个系统的表面。