Franz 是什麼?
Franz 是一種高階、函數式、直譯、動態型別的通用程式語言,語法精簡且標準函式庫豐富。其核心目的是支援函數式程式設計模式,同時提供管理效應與可預測執行的工具。
本專案被定位為以原型為核心的語言,具備能力安全效應與確定性重播功能,並包含「嚴格無副作用」(但明確註明 IO 例外)。此外,也提供從原始碼透過 LLVM IR 編譯至原生執行檔的途徑。
主要特色
- 函數式核心搭配原型導向物件:以小型函數式基礎加上原型導向物件來模擬行為,同時保持語言以函數式建構為中心。
- 能力安全效應與確定性重播:設計用來協助將來自匯入 Franz 檔案的效應進行本地化與控制。
- 嚴格無副作用(IO 表格例外):語言模型被描述為避免副作用,但明確提及 IO 機制作為例外。
- 透過 LLVM IR 進行原生編譯:支援使用 LLVM IR 直接編譯成原生執行檔。
- 清單字面量與 LLVM 清單操作:包含清單字面量語法,例如
[1, "hello", 3.14]與巢狀清單,以及head、tail、cons、empty?、length、nth、is_list等操作。 - 常見型別的比較與數學基本運算:提供適用於整數、浮點數與字串的相等/排序運算子(
is、less_than、greater_than),以及remainder、power、random、floor、ceil、round、abs、min、max、sqrt等數學函數。 - 控制流程與模式式條件判斷:提供
if/when/unless建構以及用於模式匹配式多路分支的「cond chains」。 - 詞法作用域與快照式閉包:實作詞法作用域,閉包會從定義時的環境擷取變數;支援任意深度的巢狀閉包。
- 匯入程式碼的能力式沙箱:透過
use_with()實作沙箱執行模式,並使用use_as()與點記法進行效應本地化(詳見儲存庫說明)。
如何使用 Franz
- 複製或開啟 Franz 儲存庫,並檢視內附的
README.md與範例檔案(例如examples/mult-table.franz與examples/game-of-life.franz)。 - 檢視文件中所提及的標準函式庫模組(String、Math、List、Func),以了解可用的內建函數與清單/清單組合子操作。
- 依照儲存庫說明中的詞法作用域與閉包模式,驗證閉包如何擷取變數以及巢狀閉包的行為。
- 執行儲存庫提供的腳本來測試實作與煙霧測試(儲存庫提及的 bash 腳本,例如
scripts/run-comparison.sh與自動化煙霧測試)。
使用情境
- 建置使用函數式清單處理的資料轉換程式碼:使用清單字面量與清單操作(例如儲存庫說明中所示的
map-style 模式,以及head/tail/nth等清單輔助函數)來處理結構化資料。 - 實作多分支邏輯與條件鏈:當需要根據整數/浮點數/字串比較或守衛來路由邏輯時,使用
cond鏈進行模式式分支。 - 撰寫使用閉包的高階程式碼:使用「Func module」組合子(例如
compose2、apply、apply_twice)與快照式閉包來建置可重複使用的函數式元件。 - 展示小程式中的可預測作用域:使用詞法作用域與任意深度的巢狀閉包來建構程式,使擷取的變數在呼叫間保持穩定。
- 使用原生編譯來原型化語言行為:透過 LLVM IR 管道將 Franz 程式碼編譯成原生執行檔,包含使用清單操作、數學運算、比較與控制流程的程式碼路徑。
常見問題
-
Franz 是否無副作用? 儲存庫說明指出「嚴格無副作用」,但明確註明 IO 表格作為例外。
-
Franz 是否可編譯成原生執行檔? 是。本專案說明指出「透過 LLVM IR 直接編譯成原生執行檔」。
-
Franz 使用什麼型別模型? Franz 被描述為動態型別且具垃圾收集。
-
Franz 中的閉包擷取如何運作? 文件描述詞法作用域,其中閉包會從定義時的環境擷取變數(快照式閉包),並支援任意深度的巢狀閉包。
-
儲存庫包含哪些工具? 儲存庫包含
examples/下的範例、測試(包括「煙霧測試」),以及執行比較與檢查的腳本(詳見頁面內容)。
替代方案
- 具備強型別系統的功能式程式語言(例如 ML 家族語言):若您主要想要功能式語法、可預測的作用域與閉包,但不以 LLVM 原生編譯為重點。
- 以原型為基礎的語言(例如使用功能模式的 JavaScript):適合您對原型導向物件建模感興趣,但 Franz 所述的工作流程與效應模型有所不同。
- 具備功能特性的通用編譯語言(例如透過 LLVM 編譯的語言):若您想要 LLVM IR 編譯與功能建構,但偏好不同語法與執行環境的生態系。
- 用於原型設計的腳本語言搭配沙箱機制:若您優先考量快速實驗與受控執行(本儲存庫討論基於能力的安全性模式),可選擇其他提供自身沙箱機制的執行環境。
替代品
AakarDev AI
AakarDev AI 是一個強大的平台,通過無縫的向量資料庫整合簡化 AI 應用程式的開發,實現快速部署和可擴展性。
Arduino VENTUNO Q
Arduino VENTUNO Q 邊緣 AI 電腦,結合 AI 推論硬體與微控制器,支援機器人即時控制;透過 Arduino App Lab 進行嵌入式、Linux 與邊緣 AI 工作流程。
Devin
Devin 是 AI 程式碼代理,可平行執行程式碼遷移與大型重構子任務;工程師負責專案管理並審核變更。
BenchSpan
BenchSpan 以並行方式執行 AI agent 基準測試,記錄分數與失敗,並以 commit 標記可重現結果,降低失敗重跑的 token 浪費。
open-codex-computer-use
open-codex-computer-use 是開源「Computer Use」服務,封裝為 MCP 伺服器,讓 AI 代理或 MCP 用戶端在 macOS/Linux/Windows 執行桌面 GUI 操作。
Codex Plugins
使用 Codex Plugins 將技能、應用程式整合與 MCP 伺服器打包成可重複使用的工作流程,讓 Codex 存取 Gmail、Google Drive、Slack 等工具。