Expression Problem 和 Calcit 相关引用笔记

2021-08-10
阅读 2 分钟
1.7k
Wiki [链接]知乎引用 [链接]中文简介 [链接]The Expression Problem and its solutionsMore thoughts on the Expression Problem in Haskell3 ways to solve the expression problemThe Expression Problem in RustSolving the Expression Problem with Clojure(Protocol)Calcit 示例代码 {代码...} 运行示例: {代码...}

九章编程: 文言文编程的 Cirru 实现的一种试验

2020-01-12
阅读 4 分钟
3.1k
当然了, 九章编程方案只是取巧地把 Lisp 的写法翻译成中文而已, 少了很多.首先这东西挺好玩的. 再就是自己仔细看下来也有不少自己的想法.

Cirru 后续更新维护: 2016~2019

2019-09-16
阅读 3 分钟
2.2k
大致从 2017 年以后, Cirru 在图形探索上面就比较少了, 还是基于原来的方案.主要在 Stack Editor 基础上设计了新的 Calcit Editor.另外围绕 Calcit Editor 做了一些辅助工具.大多想法还是用 Calcit Editor 维护以前整理出来的这些小的应用.

Cirru 是怎样编译到 Clojure 的

2017-09-21
阅读 3 分钟
3.7k
这篇文章解释一下 Cirru 到 Clojure 代码的编译步骤.目前编辑使用的是 Cumulo Editor, 参考这里的 Demo.Cirru 是整个大的项目的名字, Cirru 本身的目标是 AST 编程,而 Cumulo Editor 是目前项目下最新的语法树编辑器. 也就是 AST 里的 Syntax Tree.所以在新闻中你看到的 Cirru 的存在形态, 目前是这样的:

关于 Cirru Editor 存储格式

2017-09-16
阅读 3 分钟
2.1k
Cirru 是一个使用语法树编辑器来编写代码, 以此绕开语法限制的方案.目前成熟的编辑器方案有 Stack Editor 和 Cumulo Editor,其中 Cumulo Editor 是我目前开发当中正在持续维护的, 用于开发 ClojureScript.

Cumulo Editor 启动教程

2017-07-25
阅读 2 分钟
2.1k
Cumulo Editor 是在 Cirru 项目下的一个实时协同语法树编辑器,语法树编辑器说的是代码以树形结构保存, 以 DOM 的形态被编辑,实时协同说的是多人编辑时能相互看到彼此的光标和修改的字符,Cumulo 最终会被编译成 Clojure(Script) 代码, 有兴趣可以浏览下教程:[链接][链接]

Cumulo Editor 是如何实现实时协同编程的

2017-07-12
阅读 4 分钟
5k
A collaborative editor is a form of collaborative software application that allows several people to edit a computer file using different computers, a practice called collaborative editing. There are two types of collaborative editing: real-time and non-real-time. In real-time collaborative editi...

Cirru 演进历程: 2012 ~ 2016

2017-06-11
阅读 8 分钟
5.8k
Cirru 的初衷是的逃脱文本语法的麻烦, 摆脱文本的局限,基于 S-Expression 简化的结构用来表示表达式嵌套, 作为存储结构,然后 Cirru Editor 基于这个结构实现, 通过图形界面来修改代码,早期 Cirru 也提供了文本格式来兼容, 现在倾向于不使用.目前基于 Cirru 设计的最重要的工具是 Stack Editor, 用于生成 Clojure 代码.St...

My future of programming

2016-08-15
阅读 4 分钟
3.4k
正常的题目应该是 the future of programming 才对,不过我想我的套路终归会被认为是旁门左道, 很多人并不喜欢,再者说, 编程探索的方向有很多, Cirru 只是很窄的一个方向.大概在编译器, 文本语法, IDE 这些方向依然会是改进的主流.半图形编程嘛, 太奇怪, 而且也不通用, 也许还能把人吓怕了.但我还是想把自己的想法整理出...

关于 Cirru Vector 语法以及近期回顾

2016-07-23
阅读 4 分钟
3.2k
上周给 Cirru 增加了一个简单的向量语法, 基于 EDN 弄的.之前 Cirru 已经有 .cirru 格式的缩进写法, 但是不合适,原因是我的代码普遍用 Cirru Editor 生成的, 结构比较复杂,而 Cirru 缩进语法通过程序生成的代码, 总是不够可靠,于是我改用了 JSON 存储, 但 JSON 的问题是查看 git diff 不方便,于是基于 Clojure EDN 语法...

Clouditor: 基于栈的编辑器的想法

2016-07-10
阅读 2 分钟
3.2k
Clouditor 是基于我前些天的一些想法整理出来一个原型项目,简单说呢, 我觉得编辑器的侧边栏应该显示调用栈而不是文件树,具体的一些我录了视频, 应该还是能说清楚的:

近期(Mar~May)个人技术关注点回顾

2016-05-13
阅读 4 分钟
3.6k
一个人待久了有点话唠, 这篇随笔乱的想法也多很快准备回去上班了, 心里有点打鼓, 但还是尽量吧算下来歇了大概两个月, 身体也好些了, 心态也平稳了许多去年冬天时候一会感冒一会咽炎, 被咳嗽折腾了好久, 挺不开心的照顾好自己这种事情, 本以为容易, 到身体不适再去想真的挺难的死磕 bug 时候会说再坚持一会, 再坚持一会, ...

基于热替换技术推想未来的 Web 开发技术

2016-05-08
阅读 4 分钟
8.6k
微博上写了几段, 想想太长, 还是写成文章发出来, 这事对我还挺重要的原本是在反思自己为什么兴趣所在的前端项目居然蔓延得那么广甚至导致技术不专一, 很多细节做不好. 其中的原因何在? 我认为前端太广于是想到整体发展的趋势上, 于是认为背后还在更深层的事件按这点进行推想, 也就是站在热替换这点往前眺望, 有种可能性...

Cirru 语法说明

2016-01-02
阅读 3 分钟
4.5k
最近状态不佳代码写不出来, 补一下 Cirru 的文档吧前一篇 Cirru 的一年回顾好像有不少人看, 但整个项目似乎关注的人不多我大概梳理一下, 如果有兴趣希望有人能帮我探索 Cirru [链接]

Cirru Project in 2015

2015-12-27
阅读 2 分钟
4.5k
看到 Vue 总结过去, 于是也想梳理下 Cirru 过去一年的进展相对来说, Cirru 几乎是无人问津的项目, 只有我在坚守然而无论怎样, 我都觉得 Cirru 依然是非常有趣的项目2015 年相对从前收获的也算是更多, 因为终于投入实践当中了细节可以看 Twitter 上的记录, 我正文发散梳理一下[链接]

想象一下未来如何写代码和调试

2015-10-10
阅读 2 分钟
5.4k
放假中间想到一些东西, 本来想更新一下我的 fractal editor, 失败了本来如果成功的话, 我以后的 CirruScript 就可以脱离 Sublime 写的从技术难度上评估, 也许还要摸索个半年吧, 虽然已经快进行了一年了Demo 没能用代码写出来, 只能讨点嘴上的便宜了这篇文章是想梳理一下相关的两个想法, 就是代码热替换和分形查看

用 Parser Combinator 解析 Cirru 的缩进语法

2015-09-26
阅读 7 分钟
5.5k
在 Parsec 当中是存在解析缩进语法的方案的, 然而我没深入了解过等了解以后, 也许会有其他的想法, 到时候再考虑不迟Cirru 缩进解析已经实现, 修了些 bug 具体实现可能和文中有区别 [链接]

CirruScript 写的: 函数式编程另类指南

2015-08-29
阅读 3 分钟
4.8k
这篇笔记是我在理解函数式编程过程当中的一些思考整理成的大概也是我在学习当中遇到过的坎, 还有灵光一现的地方代码是用 CirruScript 写的, 尽情吐槽奇怪的语法吧因为我主要写前端, 所以这边对强类型和并行不做涉及

用 CirruScript 渲染 HTML

2015-08-20
阅读 4 分钟
3.7k
早的时候我尝试过用 Cirru 语法直接生成 HTML后边也尝试过用 Cirru 语法生成 JavaScript 的模板效果勉勉强强, 主要是学习的作用, 后来有了 React 就干脆不用了不过未来加载静态资源, 还是需要有 HTML, 就觉得麻烦, 搞出点东西来

笔记, Cirru Table Redo 失败, 经验教训

2015-06-07
阅读 4 分钟
2.8k
缘起 前面两周花了一些精力断断续续去想这个项目: Cirru Table Redo: [链接] 本来的目标是做一个实时预览每个值的解释器的 Demo 从前做过两个版本, 也是在微博记录当中回忆才萌生念头的: Cirru Live Editing: [链接] Cirru Table: [链接] 在 Live Editing 的例子里, 我试验了有一个全局 Mutable Scope, 然后代码一遍渲染...

编写 Racket 模块一些简单的记录

2015-04-26
阅读 3 分钟
6.1k
周末两天的时间写了用 Racket 运行 Cirru Sepal 的 prototype[链接][链接] 我有个毛病就是东西开开心心写的原型, 然后就丢着不管了.. 玩够了吧. Sepal 项目目标是用 Cirru 语法去写其他语言的 IR 或者 AST 运行.. 因为 Cirru 原来就是受 Lisp 元编程启发, 在 Lisp 当中能实现最有意思 而 Lisp 当中门槛文档最好而且门槛...

Julia 和 Ruby 提交 package 流程一点记录跟疑问

2015-04-25
阅读 3 分钟
4.4k
写 Cirru Parser 的原因, 对照文档搞了半天, 也是搞定了. 然后回头来一想, 好多地方搞不明白的, 以后万一模块需要维护恐怕还麻烦 所以打算留一点笔记在这里, 也留一点感想希望有多一点人重视这些东西

在 Julia 当中实现 Cirru 解释器的初步想法

2015-04-18
阅读 4 分钟
4.4k
昨天晚上不知怎么想起来 Julia, 翻了翻文档, 又有发现, 就是 Julia 有出色的元编程能力, 可以在执行过程中拼接 AST 然后执行[链接] 比如说文档里给出了这样一些例子:

周末花了点时间看 LLVM IR, 闲扯几句(菜鸟文)

2015-04-12
阅读 4 分钟
26.8k
某个大神真是牛逼得不行了, 连发文章用 LLVM 造语言一篇是 Haskell, 一篇是 Python, 看得我都飘飘然了, 以为好简单[链接][链接]总体上说, LLVM 已经是非常棒的平台了, 各种语言都能编译到他比如说 Rust, Julia, 两个语言基本上就是靠着 LLVM 强大功能强大起来的另外 Clang 跟 Swift 是苹果自家就不消说了我注意到 Haskel...

Scirpus(Cirru -> ES6 AST) 底稿

2015-04-03
阅读 2 分钟
3.5k
编程语言的执行 解释执行 [链接]简化的解释器入门和编程语言了解 Machine Code [链接] 中间语言 JVM [链接] CLI [链接] Parrot [链接] JavaScript [链接] LLVM(个人收集) [链接] 解释执行 代码 -> 语法树 -> 遍历语法树 {代码...} 解析成 JSON: {代码...} 递归执行过程: eval(ast, env) 编译执行 类似解释执行, 但...

搜集用 LLVM 创造动态语言的例子

2015-04-01
阅读 2 分钟
7.2k
很想能自己造一门完整的语言, 一直关注这些东西, 现在还是出在收集阶段.思路是将不写类型声明的代码解析跟推断, 生成 LLVM IR, 然后交给 LLVM 处理.如果你看到其他可以作为教程的例子, 欢迎评论在下边 :)

备份一点笔记, 关于用 escodegen 将 JavaScript AST 转化为代码

2015-03-25
阅读 2 分钟
7.9k
这是 Cirru 项目相关的代码, 就是把 Cirru 代码变换成 JavaScript 代码 当前版本的 CirruScript 用的是手工转化, 代码是比较乱的, 虽然也比较有效.. 其中, SourceMap 支持导致代码的复杂性难以降低, 而且, 实际上我当前写的几个项目都是没有开启 SourceMap, 因为提升并不明显 另一个原因是 CirruScript 代码和 JavaScrip...

Cirru 解析缩进的方案

2014-08-14
阅读 2 分钟
3.8k
关于编译器 parsing 的理论知识我没有完整学, 就是补过一些片段 所以这篇文章里可能有用理论知识很容易解释的一些问题, 我并没有看到 而且 Cirru 的语法坚持要用缩进, 现有的方案是难以让我满足的 这些天用 Go 重写了 Cirru 的 parser, 后面会对思路做一些解释

Node 实现 REPL 自动补全功能

2014-02-23
阅读 2 分钟
4.3k
以前没看过 Node 的 repl 模块, 尝试了一下[链接]repl 模块主要是封装了一个执行 Node 的 context 从命令行传入数据访问 我看中的是自动补全的功能, 比如 CoffeeScript 命令行工具借此实现了 Tab 补全

Cirru 项目一些约定

2014-02-22
阅读 2 分钟
4.8k
计划增加 repo.cirru.org 子域名, 托管相关静态的站点 比如 cirru-writer 项目, 本地存为 cirru/writer, 站点通过 repo.cirru.org/writer 访问 这样在 Nginx 下, Cirru 相关项目将会在同一个目录下, 方便管理