(defn 叠雅 [你的想法])

(Lisp)
造 App

叠雅是一家以 Clojure 全家桶立身的移动应用开发公司——Flutter 渲染,ClojureDart 驱动,一套心智模型贯穿后端、Web 与移动端。

src/dieya/app.cljd
(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 生态无缝互操作——上面的每个优点,都落在真机上。

Clojure Dart Flutter
(:lineage) 语言血统 04 / 05

六十年的语言,下一代的 App

血统即嵌套:每一层都继承外层的全部思想,再把它带到新的运行时。

( lisp 1958 John McCarthy · 「代码即数据」思想的起点,历史第二古老的高级语言
( clojure 2007 Rich Hickey · 不可变数据 + 实用主义,落地 JVM 与 JavaScript
( clojure-dart 2022 同一门语言登陆 Dart/Flutter——移动端补上最后一块拼图 )
)
)

( 我们用的是最古老、也最先进的语言谱系。)

(:contact) 联系 05 / 05

聊聊你的 App

hi@vinurs.me

一封邮件说清你的想法即可。我们会以工程师的方式回复:可行性、路径与我们的判断——不发销售话术。