与manim之间的往事

最近刚到大学报到完,恰巧有些闲暇时间
闲来无事,来记录一下自己与一步一步推动我走到现在的manim之间的故事(指流水账
这篇虽然叫「与manim之间的往事」,但是里面很多都和manim无关(逃

一切的起点

阅读全文

「Learn LambdaCalculus」#0

前言

前段时间,GZTime也跟我聊过一些关于lambda演算的东西
学Haskell的时候也总是能听说这个东西
看起来挺有意思,来学学_(:з」∠)_

阅读全文

「Learn Rust」#0 总章

学习一门新语言之Haskell

前言

Haskell学的差不多了,也没啥事想干了
GZTime之前也跟我推荐过Rust挺好玩的
这几天看一看
一样,没有教程,只是我的笔记而已

阅读全文

「Learn Haskell」#7 一些其它类型类

Foldable

Foldable是表示可以折叠(fold)的类型类,在Data.Foldable中定义,这使得和fold相关的函数可以用在任意Foldable的实例类型上。它的定义是:

阅读全文

「Learn Haskell」#A Haskell与范畴论

Haskell中的函子单子等都与范畴论(category theory)有很多联系,所以打算简单了解一下范畴论的相关内容。

范畴论是数学的一门学科,以抽象的方法处理数学概念,将这些概念形式化成一组组的“物件”及“态射”。数学中许多重要的领域可以形式化为范畴。使用范畴论可以令这些领域中许多难理解、难捉摸的数学结论更容易叙述证明。

———— 维基百科

范畴(Category)

范畴本质上是一个简单的集合,一个范畴$\mathbf{C}$包含三个组成成分:

阅读全文

「Learn Haskell」#6 半群与幺半群

Semigroup

半群(semigroup)是一个集合$S$,它需要指定一个二元运算符$\oplus$,并且满足

$$
a\oplus b \in S\quad a, b\in S
$$

以及结合(associative)律:

$$
(a\oplus b)\oplus c = a\oplus (b\oplus c)
$$

这个二元运算符在Haskell的Semigroup中被定义为<>函数:

阅读全文

「Learn Haskell」#5 函子、应用函子与单子

Functors

函子(Functor)是一个类型类(typeclass),和其他类型类一样,它规定了其实例类必须实现的功能(例如Eq类型类规定了它的实例必须是可以比较是否相等的),Functor规定类它的实例必须是可以进行映射的。Functor要求使用fmap :: (a -> b) -> f a -> f b 函数来实现这个功能,它接收一个a -> b类型的函数、一个内部元素为a类型的函子,返回一个内部元素为b类型的函子

阅读全文

「Learn Haskell」#3 类型与类型类

Types

Haskell有一个静态类型系统,任何变量、函数都会具有类型,并且有类型判断功能,没给出的类型会自动识别。
Type的首字母全为大写,常用的有:

  • Int:整型,有上下界范围,-2147483647~2147483648
阅读全文