Send As SMS

2005-04-22

ideas on LISP

LISP是数学的变成语言,虽然我对LISP还不熟悉,因此,有关的这些想法可能是幼稚的。

  1. 结合JVM的类型系统,在LISP中可以直接使用JVM的对象类型。
  2. 提供更为友好的交互式功能,包括可以查看函数的源代码。(可以格式化,以便更好阅读),与Smalltalk相比,LISP代码就是数据。应该充分的发挥这样的一个优点,提供最好的交互式开发支持。
  3. 传统的LISP是面向过程的,OO应该来说具有更好的描述能力。(message object message-name parameters) 就完全符合要求。
  4. LISP IDE,尤其是提供格式化及括号匹配的功能。可以采用颜色的方式来标记块。可以帮助阅读源代码。
  5. sql支持
  6. xml支持。
  7. regexp支持
  8. 强类型支持。在编译阶段进行类型确定。以下面的SQL为例,r 在编译阶段可以编译成为一个类型信息。apply执行,prepare编译时执行。
  9. js { name:" wangzx", age:30 }
    (object (name "wangzx") (age 30))
  10. js obj.name
    (get obj name) // 如果obj是强类型的,get在编译时就会对错误的类型报错。
  • [object message-name parameters]作为一种方言
  • (define se SQLEngine)
  • (define r ( message se '(select * from tblname where id = ,id) ) )
  • r.name --> (get r name)
  • r.method(args) ->(message r method args)
  • (new 'java.util.ArrayList)
一种另外的变体形式是:
  1. 支持.,其中 a.b 等效于 (field a b), a.(b c) 等效于 (invoke a b c),用于支持面向对象的操作原语
  2. 增加 """ 字符常量 """的词法, """ strings """总是被编译成为一个如下的List:(string-literal, expr1, expr2),其中,string-literal是把原有的 [aaa] 等替换成为 [$n],且相应的表达式作为 expr 存在。
  3. @sql """select * from tblname where id = [id]""" 的形式来支持SQL
  4. @xml """ ....""" 的形式来支持XML。在literal中的内容完全由xml负责解释。
以上的扩展基本上都无需改变LISP的语义,而更多的是一种语法的甜品,通过脱糖后可以转变成为普通的LISP执行。

0 Comments:

张贴评论

<< Home