Nand to Tetris 0 Nand to Tetris 0 Chapter 1 - Boolean Logic Such simple things, and we make of them something so complex it defeats us, Almost. John Ashbery (1927–2017) 所有的电子设备都由芯片驱动,而各式各样的芯片虽然外形和功能都大不相同,但其内部都是由一些 2022-11-25 #learning-note #hardware
如何将函数式中的函数翻译成逻辑式中的关系 先看看例子: 在函数式编程中,我们可以用如下的方式定义「自然数」、「自然数加法」、「自然数乘法」: (define (build-nat n) (cond ((= n 0) 'O) (else (cons 'S (build-nat (- n 1)))))) (define (succ-nat a) (cons 'S a)) (define (+-nat a b) 2022-09-27 #logic-programming
一起来实现一个基于元编程的 Io-JSON 库吧! 首先,元编程是什么 Metaprogramming is the process of writing computer programs that treat programs as data, enabling them to analyze or transform existing programs or generate new ones. 按照中文社区比较流行的说法就是……「代码 2022-07-12 #Io #metaprgramming #json
在不改变提交时间的前提下修改一条 commit 的 message 前景提要 某天晚上提交完代码之后发现 Jun 29 的那条提交里把 change 拼写成了 changed。 作为一个强迫症是肯定要改过来的啦( 第一次尝试 作为一个在投实习前特地做完了 learngitbranching 的人,这点 git 操作肯定难不倒我啦。 直接 git rebase -i HEAD~5 ,把 changed some options in tsconfig 前面的 2022-07-11 #git
一个 O(n^3) 计算矩阵特征多项式的算法 先看一个粗暴的朴素算法 首先是矩阵特征多项式的定义: φA(λ)=det(A−λI)\varphi_A(\lambda) = \det(A - \lambda I) φA(λ)=det(A−λI) 最直接的做法就是直接按行展开矩阵行列式并递归计算。这样是一个 O(n!)O(n!)O(n!) 的暴力算法,显然是不能接受的。 再看一个多项式复杂度的简单算法 由朴素算法可知,φA(λ)\varp 2022-06-03 #math #linear-algebra
函数式编程中的 fix 先看看 fix 是什么 这是 fix 在 Haskell 中的定义: fix :: (a -> a) -> a fix f = let x = f x in x 哇!好怪,这个 x 是什么?我们好像只能知道它满足 x = f x,但是这个值具体是怎么求的呢? 那我们还是先看看 fix 的应用吧 通常我们会这样定义阶乘。 fact :: Int -> Int fact 0 = 1 fact n 2022-05-19 #functional-programming #haskell #racket