gpt4 book ai didi

haskell - 举例说明实际的括号 hell 程序

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:02 25 4
gpt4 key购买 nike

有些人可能熟悉 Parenthesis Hell (代码 here )。好吧,这是在晚上打电话之间浪费时间的好方法,对吧?

这五个文件我都是用ghc编译成功的。如果我运行,解释器似乎可以工作

$ ./ph

但是由于我不太了解 Lisp/cdr/car 的东西,所以我很快就在尝试编写一个功能性程序时遇到了麻烦。我认为至少其中一些应该将一些东西打印到标准输出...

$ ./ph () ()
-bash: syntax error near unexpected token `)'
$ ./ph () (3)
$ ./ph () (())
$
$ ./ph (()())
-bash: syntax error near unexpected token `('
$ ./ph "()()" # suggestion in comment
ph: ()(): openFile: does not exist (No such file or directory)
$ ./ph # actual behavior with returns
()
()
ph: Prelude.read: no parse

不用说,任何在“文档”中使用 Hello World 的尝试都会导致大量“接近意外标记的语法错误”消息。有任何想法吗?或者一切都评估为 nil 所以这只是一个精心设计的 Lisp joke ,除了两个实际的编译器?谢谢!

(注意:Lisp 爱好者将通过教更多人如何解释这个括号内容来提供服务,我不得不承认无论如何在完全不同的上下文中这对我来说都是有用的。)

编辑 2:@dfeuer 至少有一个有效的解决方案,尽管我想知道是否可以从 shell 交互使用。

$ cat hello
(()()(()()(()()()()((()()(()(()((()((()()()((()((()()()((()((((()()(()()()()()()(((()(((()((()((((()(((()()(()()((()((()()()((()()(()()()()(()()()()(()()()()(()(())))))))))))))))))))))))))))))))))))))))))))))))))
$ ./ph hello
Hello world!

奇怪但又很棒。

最佳答案

我认为它不需要在其参数中包含代码。在我看来,它像是在寻找文件名(以及一个名为 -v 的命令行选项)。

似乎每个程序只接受一个带括号的表达式。所以像 () (()) 这样的东西是无效的,但是 (() (())) 是可以的(或者至少是格式正确的)。如果你想从命令行使用它,你可以使用 echo 因为它也从标准输入读取:

echo "(()()(()()(()()()()((()()(()(()((()((()()()((()((()()()((()((((()()(()()()()()()(((()(((()((()((((()(((()()(()()((()((()()()((()()(()()()()(()()()()(()()()()(()(())))))))))))))))))))))))))))))))))))))))))))))))))" | ./Test

关于haskell - 举例说明实际的括号 hell 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27559368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com