【猫谈】课程介绍

avatar
HR @Tubi

图片

在 Tubi 我们有一个名为「Cat Talks」兴趣小组,我们主题涵盖范畴论,类型论乃至各种函数式编程相关的内容。每两周一次,公司内小伙伴们会聚集起来围绕一个预选的主题分享讨论,有时还会邀请公司外的讲师和听众一起参加。Cat Talks 是一个关于范畴论的系列课程。

图片

大家可能有很多耳熟能详概念,譬如说「單子」(Monad),都来自范畴论。我知道很多人都尝试过通俗地解释这些概念,有人通过很简单易懂的例子,有人通过类比熟悉的概念,但是这些往往都不够准确和完整,甚至很多都是错的。

对于范畴论概念,我觉得最好的学习方式是抛弃先入为主的认知,从原理的阐述开始,学习其定义,再找一些数学或者函数式编程里对应的例子加深理解。在 Cat Talks,我们就是一点一点从最基础的概念讲起:从 Category,Functor,再到 Natural transformation。再后来,我们就讲到了所谓「自函子范畴上的幺半群」(笑)到底是什么意思。我觉得如此由浅入深,能使大家更好地学习这些概念真正的涵义。

上周 Cat Talks 的内容就是一个关于 Free monad 的 live coding session,我们基于之前介绍过的 Free-forgetful adjunction,还有上上次学习的 Free monoid 的概念近一步延伸,用 Haskell 演示了怎么定义和推导 Free monad,通过一个简化的经典例子 — Teletype 演示了 Free monad 的应用。我们还顺带聊了一些关于 Free monad 和目前炙手可热的概念 Algebraic effect 之间的联系。

图片

当然,除了我们主要的范畴论入门课程,其他的分享内容也是多种多样,举例来说,Hailong 分享过如何从头实现一个 Parser combinator,再用之实现了简化的 Emmet;Xusheng 演示过使用 Scala 范型实现的强类型 CSV parser;还有众所期待的下周 Tristen 会分享 Lens 的原理和用法。

To Be Continued

也非常欢迎对该系列话题感兴趣的伙伴加入我们的猫谈讨论,具体可联系 t****ina@tubi.tv

图片

作者:Xinyuan Zhang, Tubi Backend Engineer