问题标签 [sisc]
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.
scheme - 如何在 Scheme Lisp 中将字符串转换为精确的数字?
例如,我有这个字符串:“6119726089.12814713”
如果我这样做(string->number "6119726089.12814713")
- 使用 SISC 实现,结果是6.119726089128147e9
- 在 Guile 实现中是6119726089.128147
,但我想要一个确切的数字,比如:611972608912814713/100000000
不损失精度。
我想要一个像 (string->exact) 这样的函数或类似的函数。
注意:请修复我的非母语英语并删除此消息。谢谢。
scheme - 如何在 SISC 方案的第一个参数中创建一个接受字符串的“定义”?
我们称这个函数为“动态定义”。
基本上我想编写一个像这样工作的宏或 lambda:
我尝试过这个:
它按预期工作,但似乎不是一个好的解决方案。
我尝试在没有 eval 的情况下使用:
但是当我尝试使用时,我得到了这个错误:
我应该怎么办?
(请:编辑此问题以适合母语英语并请删除此行)
scheme - 递归函数未按计划工作
我正在用 Scheme 编写一个函数,它应该采用两个整数 X 和 Y,然后递归相加X/Y + (X-1)/(Y-1) + ...
,直到其中一个数字达到 0。
例如,取 4 和 3:
4/3 + 3/2 + 2/1 = 29/6
这是我的功能无法正常工作:
编辑:我已经更改了我的代码以解决评论中列出的问题,以及更改 和 的or
位置and
。
不幸的是,我仍然遇到错误。
recursion - 递归函数不起作用'“过程车中的错误类型参数”
我正在编写一个递归函数,它接受一个元素 A 和一个列表 L 并返回一个等于 L 的列表,但每次出现的 A 都被删除。这是我写的:
编译并运行时,我收到以下错误:
list - 替换列表中第一次出现的元素
我正在编写一个函数replaceFirst(X Y L)
,它仅将列表 L 中第一次出现的 X 替换为 Y。
这是我到目前为止所做的:
这给出了一个错误In procedure setter: Wrong type argument in position 1: #<procedure car (_)>
编辑
我想出了一个解决方案:
首先,如果X
是第一个元素,而不是使用set!
(我不熟悉),我cons
Y
将列表排除在外X
。
否则,我cons
将列表的第一个元素与列表的其余部分递归调用的函数。