接下来的计划

接下来的计划

八月 22, 2021

回想一下这个暑假好像也没做什么呢……倒是稍微看了点 FP 的东西,先是 The Joy of Kotlin 里面那个不完备的FP,然后啃了一下其他的一些杂七杂八的东西,对 FP 尤其是 Monad 算是稍微有点印象了吧。

同时也试着在不同的项目里面用上 FP 的概念,首先是那个计算器用的 BetterParse,虽说那时候只是用,但是对 Parser Combinator 的实现是一无所知的(

然后是 KTorrent 里面依赖 Option 来做了个 Bencode 的解析。最后是上了 HKT、Trampoline 和若干个 Monad 实例的 NekoBinator。

于是慢慢的也就产生了想要用 FP 做更完整更普适的项目的想法了。。。

大概是这样吧:

  • 时间期限预估为半年

  • 首先实现一个自用的 FP 的基础库,姑且包括以下内容

    • HKT和一些其他的基础设施,例如currying

    • Typeclass,包括:

      AlternativeApplicativeComonadEqFoldableFunctorMonad

      MonoidMonoidKOrdSemigroupSemigroupKShowTraversable

      MonadFailMonadPlus……

    • 实例类型,包括:ContinuationConstEitherFreeApplicativesFreeMonads

      IdIOLazyListMaybeReaderResultStateTreeTry

      Writer……

    • List 包括一个委托给原生的 List 和一个自己实现的支持 data sharing 的链表

    • Lazy 和 Stream 还有 Heap

  • 然后用这个 FP 库实现一些应用,比如说一个 Parser Combinator,或者一个 lazy list(用来算 fib,for 个example)再比如说一些算法(

  • 然后用 Parser Combinator 写一些 Parser

  • 可能还要去研究一下 Actor 模式

  • 暂定命名为 ciallo (喂

感觉挖了一个大坑(bushi

除此之外,也感觉需要多啃点猫论了(

在这期间如果有什么坑或者新的发现也许会水几篇文(