考虑以下背景:
{
dogs: [ {name: "rex"}, {name: "tobi"} ]
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能将狗作为阵列倾倒,即:类似的东西 JSON.stringify(dogs)
我尝试过{#dogs}{@contextDump}{/dogs}
,但(逻辑上)它输出:
{"name": "rex"}{"name": "tobi"}
Run Code Online (Sandbox Code Playgroud)
而不是:
["name": "rex"}, {"name": "tobi"}]
Run Code Online (Sandbox Code Playgroud)
谢谢
我开始阅读Thinking Forth.在书中,作者提到了一个三线模块系统,其中提到了Forth会议的记录.这是一个PDF,其中包含从第14页开始的模块系统的描述(打印时为132).
这是关于如何使用三个定义的单词的说明INTERNAL
,EXTERNAL
以及MODULE
.
模块是INTERNAL和MODULE之间的程序的一部分.在INTERNAL和EXTERNAL之间写入模块本地的常量,变量和例程的定义.在模块外部使用的定义写在EXTERNAL和MODULE之间.[例程的局部变量]在INTERNAL和EXTERNAL之间定义.引用它们的例程在EXTERNAL和MODULE之间定义.
这是代码本身:
: INTERNAL ( --> ADDR) CURRENT @ @ ;
: EXTERNAL ( --> ADDR) HERE ;
: MODULE( ADDRl ADDR2 --> )PFA LFA ! ;
Run Code Online (Sandbox Code Playgroud)
我正在阅读这本关于如何编写软件的想法,而不是如何在Forth的任何特定实现中编程,所以我不熟悉代码中使用的内置字,但我是对这个模块系统很好奇.有人能解释它是如何工作的吗?
所以我正在编写自己的函数,我调用了它make-list
,我从调试器得到了这个:
The function MAKE-LIST is predefined in Clozure CL.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [CONTINUE] Replace the definition of MAKE-LIST.
Run Code Online (Sandbox Code Playgroud)
很好,但如果我不小心选择了选项怎么办0
?我的编译器是否会被破坏并且永远有一个错误的内部函数定义,因为我会替换它?
我有两个项目.第一个a-child
是一个列表,其中包含一个数组作为其第一个元素,然后是一些字符串作为其余元素.另一个mapped
是包含许多数组的列表.通过检查,很容易看到它a-child
在mapped
,虽然我找不到一个能找到它的功能.
我为下面糟糕的lisp风格道歉 - 我几天前开始,所以我还没有拿起所有的约定.
(defparameter a-child (list (#2A((1 2 3) (7 4 5) (9 8 6))) "U" "R" "R"))
(defparameter mapped (list (#2A((1 2 3) (7 4 5) (9 8 6))) (#2A((1 2 3) (4 5 6) (7 8 9)))))
(find (car a-child) mapped) ;;returns NIL
(member (car a-child) mapped) ;;returns NIL
(position (car a-child) mapped) ;;returns NIL
(equalp (car a-child) (car mapped)) ;;returns T
Run Code Online (Sandbox Code Playgroud)
我可以用什么函数来查找数组列表中的数组?谢谢.