问题标签 [picolisp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lisp - Picolisp 问题,处理数字列表时的段错误(来自邮件列表)
我是 Picolisp 的新手。
我尝试了这个,并获得了一个段错误:
但是,如果我尝试:
我基本明白为什么,但令人惊讶的是 PicoLisp 以段错误而不是错误响应。这是否意味着 Picolisp 不检查数字是否为函数,但当它是符号时它会检查?
lisp - Pilog 中自动生成的密钥
为 Pilog 自动生成密钥的最佳方法是什么?我一直在挖掘,找不到任何相关的东西。
提示和指针将不胜感激。谢谢你。
macos - 'call foo@plt' 的 OSX GNU 汇编器问题
在尝试在 Mac OS X (10.6.7) 上构建 64 位 PicoLisp 时,我似乎遇到了 OSX Dev 的问题。工具 GNU 汇编器 ('as'),版本 1.38。我的 Xcode 是 3.2.4 版。我的(生成的)x86-64.darwin.base.s 中导致问题的行通常如下所示:
...他们给我这样的错误消息:
64 位 PicoLisp 在 Linux 和 SunOS 上构建没有问题。这些平台可能具有功能更强大(更新)的 GNU 汇编器版本。我不知道更新的 GNU 汇编器是否适用于 OSX/Darwin ......或者是否有其他解决方案?
如果你想在 OSX/Darwin 上自己尝试一下,我可以给你一些需要的文件。
unix - ncurses中的颜色对没有使用正确的颜色
我正在尝试使用 ncursesw6.1(链接到 PicoLisp)。据我所知,PicoLisp 直接传递值的方式是,我通过非 C 语言调用 ncurses 的事实不应该是一个因素[1]。但是,当我尝试使用颜色对(定义如下)时:
它不起作用。相反,颜色对 1、2 和 3 都显示为相同的颜色对。然后 4 和 6 显示为*COLOR-SCHEME-COMMENT
顶部,*COLOR-SCHEME-BACKGROUND-DARK
5 和 7 显示为 4 和 6 的反面。这似乎与我输入的内容没有逻辑关系。更奇怪的是,当我使用非自定义颜色(颜色 0-7)时,它也不起作用,因此通过定义这些配色方案颜色init_color
与它无关。
我已经用颜色对 1 单独测试了颜色,所以我知道颜色正在正确初始化。
到底是怎么回事init_pair
?
PS 如果我使用 Lisp 的事实让这变得更加困难,我真的很抱歉,我知道它不是一种通用语言。这在当时似乎是个好主意,而且到目前为止还不错……
编辑:我已经重新编译了启用的 libncursesw6.1 --with-trace
,这是来自跟踪文件的相关信息:
这些确实是正确的值,因此正确的值被传递给init_pair
. 虽然自定义颜色不是问题,但对于那些想知道的人来说,这里是关于颜色的trace
文件信息:*COLOR-SCHEME
此外,虽然我将wborder
函数设置为使用颜色对 7,根据调试信息应该是颜色 8 而非颜色 13(与我的代码中的颜色匹配),但trace
文件说它实际上使用的是颜色对 5,我在代码中的任何地方都没有使用:
所以,我上面的推测是确实正在发生的事情。颜色对 5 和 7 显示相同,即使颜色和颜色对被正确传递给 ncurses。
scope - 如何编写不使用参数隐藏变量的 PicoLisp 函数
我在闲逛 PicoLisp,发现自己对如何编写传统上由宏处理的元编程函数(在其他 lisp 方言中)感到困惑。对我来说最大的担忧是我看不到如何防止变量名隐藏。回顾元编程 101中的示例,如果有的话,只会让我更加困惑。
有关如何实现该功能的示例mapeach
,如链接文章中所示:
我已经用 call 测试了每一个(let "Args" * (mapeach N (1 2 3) ("Args" N N)))
。正如预期的那样,PicoLisp 解释器(以 command 开头pil +
)遇到段错误并崩溃。我认为这是因为mapeach
's"Args"
阴影"Args"
在调用点定义。
我还尝试了他们的两种实现map@
(“更可爱”的替代方案mapeach
)。
我曾经(let "Args" * (map@ (1 2 3) ("Args" @ @)))
测试过这些实现中的每一个。奇怪的是,我第一次测试第一个实现时,不仅没有段错误,而且实际上产生了正确的结果(1 4 9)
。随后的每个测试都导致了段错误。为清楚起见,提示中的片段:
我相信通过调用(当时)未定义的函数以某种方式阻止了段错误mapeach
,我也尝试过(ooga booga)
,这同样阻止了段错误。如果我没有将定义与正确调用分开的错误调用,则总是会发生段错误。
这最终导致两个问题:
- 如何防止名称隐藏?显然,这些例子在这方面并不成功。
- 为什么对 map@ 的调用不会导致段错误?
lisp - 如何在 PicoLisp 中使用 `cond` 返回默认值
cond
当语句不满足其他条件时,我试图返回默认值。如何在 PicoLisp 中实现这一点?