Home
 
Cirru 一些遐想
 
越发觉得 Cirru 是个泥潭, 两天写不出代码也逃不出去
我犯的错误是不自量力想弄点花哨的语言特性出来, 而且做不到就不想继续
脑海里的确划过了一些自以为漂亮的点子, 我试着描述一下
 
首先关于用作用域减少重复代码的使用, 特别在对象方法使用的时候
比如代码中导入模块的手法两种相对的手法,
一种导入后直接在全局作用域内使用对应的函数, 比如 C 那么做
一种导入的实在对象, 就要点号访问对象的方法使用, 比如 Node
另外像 hs 似乎两者皆可, 具体不清晰.. 后悔没细学了
全局导入, 就有覆盖的问题, 但另一种可能有重复的麻烦
比如 js 中重复书写的 cvs 或者 elem 对象, py 的 self 更是惯用
那么如果允许在任意位置引入模块覆盖局部作用域就轻松一些, 像:
(def s (string nothing))
(def lib (module http://server.do/lib.cirru))
(. lib echo s)
(. lib
(echo s)
(inspect s))
(alert)
.lib 的方法添加到一个内部可访问的作用域, 简化书写
不过问题是覆盖还是可能发生, 需要其他规则来辅助
 
教程的例子里, 作用域手工生成, 就像平常用的数据结构一样
因此代码的重用就可以类比重用作用域, 至少看起来和面向对象很像
而且也有语言看起来就是拷贝作用域来实现面向对象的
github.com/indutny/candor#readme
对于具体实现, 尚且有难题. 但也许操作作用域会是有趣的东西
其实 Cirru 如果能成, 数据和程序的紧密度估计不减 Lisp
因为从代码读取的源码的形式是一致的, 甚至不会有 Lisp 的反引号语法
那么尝试呈现语言内部的机理到语言的使用环境, 类似会有怪的功能
目前我无法实现, 但存这一点思路或许可行的
 
更出格的想法是用 DOM 存储数据, 程序直接在 DOMM 上运行
此前写 code_blocks 我用数组存代码, 再实时得绘制出来
这次编辑器部分直接操作 DOM, 效果不错, 验证是可行的
代码假如也能在 DOM 直接执行, Live-Coding 就很贴近了
比如说写代码的时候就能清楚当前的作用域有哪些内容, 怎样补全
还有比如错误提示, 在出错时其实能获取元素, 甚至在元素上标记
如执行到一标签认为类型不对, 可直接存下 elem 一备标记
而且能有各种颜色动画等标记方式可以优化代码具体的内容
DOM 是一种存储数据的方式, 特别是它完全是可见的
 
一门语言该有哪些特性我并不清晰, 现在想的主要是怎样更灵活
如果语言里有可以再拆散的部件, 我很想看看一一分离的效果
一门特性极多甚至难以完全掌握的语言不是好的工具
目前代码不知怎样才能将脚手架搭建完成, 所以先打算搁置了
 
comments powered by Disqus