Show HN: Fuse – 静态类型函数式编程语言
Show HN: Fuse – statically typed functional programming language

原始链接: https://fuselang.org

```trait Functor[A]: fun map[B](self, f: A -> B) -> Self[B]; impl List[A]: fun fold[A, B](l: List[A], z: B, f: (B, A) -> B) -> B match l: Cons(h, t) => List::fold(t, f(z, h), f) Nil => z fun sum(l: List[i32]) -> i32 List::fold(l, 0, (a, b) => a + b) impl Functor[A] for List[A]: fun map[B](self, f: A -> B) -> List[B] List::fold(self, Nil[B], (t, h) => Cons(f(h), t)) fun fmap[A, B, F: Functor](f: A -> B, x: F[A]) -> F[B] x.map(f) fun main() -> IO[Unit] let l = Cons(1, Cons(2, Cons(3, Nil))) let l2 = fmap(x => x * 2, l) print(int_to_str(List::sum(l2))) ```

**Fuse** 是一款全新的静态类型、纯函数式编程语言,其开发者目前正在寻求社区对其设计的反馈。Fuse 历经五年开发,具备高阶类型、特设多态、模式匹配和代数数据类型(ADT)等特性。它基于 Scala 实现,并通过 GRIN 全程序优化器编译为原生 LLVM 代码。 在语法上,Fuse 借鉴了 Rust、Haskell、Scala 和 Python,旨在纯函数式框架内提供类似 Rust 的功能,例如基于特性的编程和 `impl` 代码块。 在 Hacker News 的初步讨论中,作者回答了若干技术问题,指出该语言目前使用简单的 IO 单子(Monad),但计划对运行时副作用管理进行规范化。开发者还确认,尽管底层的 lambda 演算类型系统支持柯里化,但代码生成层面的支持仍在开发中。未来的开发目标包括:增加完整的模块支持、处理标准库中的 Unicode 编码,以及完善语言在导入和库重叠方面的机制。
相关文章

原文
trait Functor[A]:
    fun map[B](self, f: A -> B) -> Self[B];

impl List[A]:
    fun fold[A, B](l: List[A], z: B, f: (B, A) -> B) -> B
        match l:
            Cons(h, t) => List::fold(t, f(z, h), f)
            Nil => z

    fun sum(l: List[i32]) -> i32
        List::fold(l, 0, (a, b) => a + b)

impl Functor[A] for List[A]:
    fun map[B](self, f: A -> B) -> List[B]
        List::fold(self, Nil[B], (t, h) => Cons(f(h), t))

fun fmap[A, B, F: Functor](f: A -> B, x: F[A]) -> F[B]
    x.map(f)

fun main() -> IO[Unit]
    let l = Cons(1, Cons(2, Cons(3, Nil)))
    let l2 = fmap(x => x * 2, l)
    print(int_to_str(List::sum(l2)))
联系我们 contact @ memedata.com