On eval in dynamic languages generally and in Racket specifically (2011)
a year ago
- #programming
- #Racket
- #eval
- `eval`函数是Racket等动态语言的核心,但经验丰富的程序员常因其潜在问题而避免使用
- `eval`就像用对方可能不懂的语言下达指令,容易导致不可靠的结果
- `eval`的合理使用场景包括动态生成并传递指令,例如向施工队动态发送作业指导
- 在Racket中,`eval`与模块命名空间交互,DrRacket会为交互窗口设置命名空间
- Racket为`eval`设置的默认空命名空间可提醒程序员注意语言上下文
- 安全考量要求限制`eval`的权限并避免引用混淆
- Mike Samuel强调应使语言具备可分析性,并限制嵌入式脚本语言的权限
- Hendrik Boom指出原文存在打字错误,关于`eval`的某个句子缺少'that'