我的小组在大多数源代码中都使用了Literate Programming--这意味着内部文档是使用LaTeX编写的.我们一直在使用PStricks来制作系统的精美技术图表,但最近建议使用TikZ.我收集了这些信息:
pdftex.PStricks只适用于dvips.我对两个问题的答案很感兴趣.如果您愿意,请随意为每个问题发布一个答案:
这两种工具的学习曲线是什么?(我认为PStricks有一个陡峭的学习曲线;关于TikZ,我不知情.)
被认为是编程API,这两个包中的一个明显比另一个更好吗?如果是这样,哪个设计更好,为什么?(它有哪些属性让你认为它更好?)
为了说明为什么一个API优于另一个API,您可能想要使用示例.
我正在为编译器编写器的新Haskell包快速而疯狂地工作.我每天都会经历许多次要版本号,而Haskell打包系统Cabal似乎没有提供任何更新版本号或维护更改日志的工具.(日志正在进入,git但是使用该软件包的任何人都看不到.)我会杀掉与Debian uupdate或dch/ debchangetools 相当的东西.
有没有人知道可以用来自动增加版本号并在更改日志中添加条目的通用工具?
我读了不同的文件,CRF(条件随机字段)是如何工作的,但是所有的论文都只提供了公式.有没有人可以给我发一篇描述CRF的论文,例如我们有一个句子
"史密斯先生出生于纽约.他在微软公司工作了20年."
如果将上述句子作为训练的输入,那么该模型在培训期间如何运作以考虑CRF的公式?史密斯被标记为"PER"纽约被"LOC"微软公司称为"ORG".Moges.A
一个相当聪明的人告诉我你不能在C中实现垃圾收集,因为它的类型很弱.基本的想法似乎是C给你太多的自由.他提到了没有类型检查的铸造指针......
我并没有真正理解这个想法.有人可以给我一个解释,也可能是一个代码示例,说明为什么这不起作用.
注意:显然C是关于速度的,为什么要添加垃圾收集?我真的很好奇.
我有一个git存储库(目前)有三个分支:
head是稳定的版本(不要与git混淆HEAD)experimental是实验代码; 它应该编译norman是我的沙箱; 其中的代码可能会被破坏"master"git repo位于备份的文件服务器上.但我在本地磁盘,家里的机器和笔记本电脑上都有复制品.(我准备随时随地编写代码).
git branch -a 说明:
experimental
head
* norman
tufts/HEAD
tufts/experimental
tufts/head
tufts/norman
Run Code Online (Sandbox Code Playgroud)
塔夫茨分支机构是"主"仓库的远程分支机构.本地分支机构应该跟踪; git config -l | grep -w remote说:
remote.tufts.url=linux.cs.tufts.edu:/r/ghc/git/experimental.git
remote.tufts.fetch=+refs/heads/*:refs/remotes/tufts/*
branch.experimental.remote=tufts
branch.head.remote=tufts
branch.norman.remote=tufts
Run Code Online (Sandbox Code Playgroud)
这是我的问题:如何使用单个git命令同时更新远程对应的所有本地分支?
git-fetch并不是很有效; 它更新它对每个远程分支的内容的了解,但它不会将它们合并到本地.并且显然git-pull只更新当前已检出的分支.我想立刻更新所有分支机构.可以吗?
(我并不狂热
for i in `git branch | sed 's/^.//'`; do git checkout $i ; git pull; done
Run Code Online (Sandbox Code Playgroud)
部分是因为我不清楚工作目录中修改过的文件发生了什么,而这一切都在继续,部分是因为我需要更多的shell代码来保存和恢复有关我目前所在分支的信息.)
我找到一个(不是非常密切相关)的问题:
我需要将一系列用户输入的单词与一个大的单词词典相匹配(以确保输入的值存在).
因此,如果用户输入:
"orange" it should match an entry "orange' in the dictionary.
Run Code Online (Sandbox Code Playgroud)
现在的问题是用户还可以输入通配符或一系列通配符,比如说
"or__ge" which would also match "orange"
Run Code Online (Sandbox Code Playgroud)
关键要求是:
* this should be as fast as possible.
* use the smallest amount of memory to achieve it.
Run Code Online (Sandbox Code Playgroud)
如果单词列表的大小很小,我可以使用包含所有单词的字符串并使用正则表达式.
但是,鉴于单词列表可能包含数十万个企业,我认为这不会起作用.
那么某种"树"是这样的方式......?
对此有任何想法或建议将完全赞赏!
先谢谢,马特
我想在两个不同的Haskell模块之间使用相同的中缀运算符(<*>)进行名称冲突.Haskell 98报告说
modid.varsym
Run Code Online (Sandbox Code Playgroud)
是允许的,但我不能让它工作.这里完整的是Test.hs:
module Test
where
import qualified Test2 as T
three = T.<*>
Run Code Online (Sandbox Code Playgroud)
并且Test2.hs:
module Test2
where
(<*>) = 3
Run Code Online (Sandbox Code Playgroud)
但是尝试编译结果会出现错误消息:
Test.hs:6:12: parse error on input `T.<*>'
Run Code Online (Sandbox Code Playgroud)
我尝试过,T.(<*>)但这也不起作用.
如何引用由导入的模块中定义的符号名称import qualified?
我想让我的学生使用git进行结对编程.因为学生的工作必须是秘密的,所以公共回购是不可能的.相反,每个学生都将拥有自己维护的私人仓库,他们需要使用git-format-patch交换补丁.我已经阅读了手册页,但我有点不清楚会发送哪些补丁.对于学生来说,显而易见的事情是发送自上次发送以来的所有补丁或(如果git不介意冗余地接收相同的补丁)从发布时间开始发送所有补丁.(请记住这些是学生项目,它们持续数周而且很小,性能不是标准.)我们最好的朋友是简单 而且我们也喜欢蛮力.
任何人都可以给我一个简短的一系列示例,显示两个人,每个人都有一个私人git仓库,使用git-format-patch和git-am交换补丁?或者指向现有的git文档和/或教程?
众所周知,所有函数语言都共享一些基本属性,例如使用函数作为程序的基本构建块,具有使用递归而不是迭代的所有后果.但是,也存在一些基本差异.Lisp对Lisp代码和数据使用单个表示,而ML没有ML代码的标准表示.Erlang有一个内置的基于actor的并发.Haskell有monad.Haskell在纯函数和不纯函数之间对静态类型系统进行了区分; ML没有.
其他功能语言(Clojure,F#,Arc,还是其他语言)之间有什么明显的根本区别?从根本上来说,我的意思是影响你在这种语言中发展的方式,而不是例如它是否与一些广泛的运行时集成.