(defn 叠雅 [你的想法] …)
用 (Lisp),
造 App
叠雅是一家以 Clojure 全家桶立身的移动应用开发公司——Flutter 渲染,ClojureDart 驱动,一套心智模型贯穿后端、Web 与移动端。
(ns dieya.app (:require ["package:flutter/material.dart" :as m] [cljd.flutter :as f])) (def taps (atom 0)) (defn main [] (f/run (m/MaterialApp .title "叠雅 Dieya") .home (m/Scaffold .appBar (m/AppBar .title (m/Text "用 Lisp,造 App"))) .body (f/widget :watch [n taps] (m/Center) (m/Column .mainAxisAlignment m.MainAxisAlignment/center .children [;; 在 REPL 里改这行,运行中的 App 立即更新 (m/Text (str "已热更新 " n " 次") .style (m/TextStyle .fontSize 24)) (m/ElevatedButton .onPressed #(swap! taps inc) .child (m/Text "+1"))])))))
REPL connected
保存即热更新 · 状态不丢
(:stack) 技术栈
02 / 05
Flutter
渲染引擎 · 双端 60fps
Dart
编译目标 · AOT 原生
Clojure
后端 + Web · JVM/JS
ClojureDart
移动端 · Clojure→Dart
λ
Lisp
语系根基 · since 1958
(:why-lisp) 技术叙事
03 / 05
为什么是 Lisp?
不是情怀,是工程决策。下面每一条都是可验证的技术事实,也是你的 App 更快交付、更少 bug 的直接原因。
(:one-language)
同一门语言贯穿全栈
Clojure 写后端,ClojureScript 写 Web,ClojureDart 写移动端。一套心智模型、一套数据结构、一套工具链——没有「前后端两拨人互相翻译」的损耗。
(:repl-driven)
REPL 驱动开发
改一行代码,正在运行的 App 立即生效——不重启、不丢状态。迭代速度对传统「改码-编译-重启-点回原页面」是数量级领先。
user=> (reset! taps 0) ;; App 界面同帧归零
(:immutable)
不可变数据结构
状态默认不可变:UI 渲染可预测、并发天然安全。「谁在什么时候偷偷改了这个值」这一整类 bug,从语言层面根上消失。
(:code-as-data)
Code as Data(同像性)
Lisp 的代码本身就是数据结构。宏系统可以扩展语言本身——为你的业务定制 DSL,让领域规则直接成为可执行代码。
(:flutter-engine)
Flutter 引擎,双端原生体验
一份代码,iOS 与 Android 同时交付,60fps 原生级渲染。ClojureDart 编译为 Dart,与 Flutter 生态无缝互操作——上面的每个优点,都落在真机上。
(:lineage) 语言血统
04 / 05
六十年的语言,下一代的 App
血统即嵌套:每一层都继承外层的全部思想,再把它带到新的运行时。
(
lisp
1958
John McCarthy · 「代码即数据」思想的起点,历史第二古老的高级语言
(
clojure
2007
Rich Hickey · 不可变数据 + 实用主义,落地 JVM 与 JavaScript
(
clojure-dart
2022
同一门语言登陆 Dart/Flutter——移动端补上最后一块拼图
)
)
)
( 我们用的是最古老、也最先进的语言谱系。)
(:contact) 联系
05 / 05