为了全能的爱,我还没有理解符号的目的'iamasymbol.我理解数字,布尔值,字符串...变量.但是符号对于我的小思维思维来说太过分了.我究竟用它做什么用的?它们应该如何在程序中使用?我对这个概念的把握只是失败了.
在标准Scheme中,可以编写
(if (> x 2)
(set! x (- x 1)))
Run Code Online (Sandbox Code Playgroud)
但这在Racket中是不可能的 - Racket if总是需要两个手臂.为什么?
所以基本上我正在寻找一种方法来计算矢量的x,y和z分量,使用2个角度,如图所示:
其中alpha是2D角度,beta是y角度.我现在一直在使用的2D矢量是:
x = Math.sin(alpha);
z = Math.cos(alpha);
Run Code Online (Sandbox Code Playgroud)
在stackexchange数学搜索后,我发现这个论坛不能正常工作:
x = Math.sin(alpha)*Math.cos(beta);
z = Math.sin(alpha)*Math.sin(beta);
y = Math.cos(beta);
Run Code Online (Sandbox Code Playgroud)
注意:当使用β角接近90度时,x和z分量应接近零.所有帮助将不胜感激.
我目前在Mac OS X上使用DrRacket并选择语言"R5RS",但是当我进入时
(random 100)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
reference to undefined identifier: random
Run Code Online (Sandbox Code Playgroud)
这有什么问题?它是由缺少包裹引起的吗?
在python我可以使用dir()和球拍(5.2)我可以做
(require xrepl)
,apropos
Run Code Online (Sandbox Code Playgroud)
获取所有已定义变量的列表.在所有方案中都有什么便携方法可以做同样的事情?完成后,如何过滤掉所有系统和模块变量?完整的变量列表在球拍中相当令人生畏.
在将一些Fortran翻译为Scheme/Racket时,我遇到了这个功能:
; EPSILON(X) The least positive number that added
; to 1 returns a number that is greater than 1
Run Code Online (Sandbox Code Playgroud)
如何在Scheme中找到该号码?
可以通过syntax/loc和构造新的语法对象syntax(也可以用编写#')。
我syntax/loc什么时候应该使用?
给定一个没有修饰符的键的键代码,我想产生按shift +键的结果.示例:对于标准美国键盘,<shift> + <period>给出>.
相关的功能是UCKeytranslate,但我需要一些帮助来获得正确的细节.下面的代码片段是一个完整的程序,可以在XCode中运行.该程序的目的是给出<period>来产生字符>.
该计划的结果是:
Keyboard: <TSMInputSource 0x10051a930> KB Layout: U.S. (id=0)
Layout: 0x0000000102802000
Status: -50
UnicodeString: 97
String: a
Done
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)
获得布局的部分似乎正在工作,但状态代码显示出现了问题.但是什么?
import Foundation
import Cocoa
import Carbon
import AppKit
// The current text input source (read keyboard) has a layout in which
// we can lookup how key-codes are resolved.
// Get the a reference keyboard using the current layout.
var unmanagedKeyboard = TISCopyCurrentKeyboardLayoutInputSource()
var keyboard = unmanagedKeyboard.takeUnretainedValue() as TISInputSource
print("Keyboard: ") …Run Code Online (Sandbox Code Playgroud)