cs61a学习记录及感悟

发布时间 2023-12-18 14:56:19作者: yzuking

这几天学习主要讲了基础的语法和一些interpreter如何评估一个表达式,比较有收获的是如何定义一个良好的函数,要有好名字的argument,描述函数功能的docstring,测试用例,以及一些assert去提示我要输入怎样的argument。这是我以前在学习c中所欠缺的而且总是忙于去实现一个个问题,也没有面向project做过一个完整的项目,所以这次我也想跟着cs61a完整学完课程然后去github去做一些项目,力求去规范和implement我自己的工作流。
昨天学习的higher-order- function让我感觉很强大,我可以通过定义一个normal-pattern,在根据特定的需求去编写特定的函数将其的返回作为arguemnt输入之前的pattern,这样可以避免许多重复性的劳动,正因为这样的特性我们可以在一个函数中完成许多工作,通过在一个函数中定义其他的函数从而完成一些强大的功能,而且可以组合各种各样的函数,关键点是理解将function as a value。另外还学习了curry2可以帮助我们将一个接受多重参数的函数变成接受单一参数的函数,这样的好处是我们可以将一个函数从纵向上分成许多phase,当我们想要哪个phase时,我们可以将其单拎出来分析比如这段代码

{
def curry2(f):
  def h(x):
      def g(y):
       return f(x,y)
    return g
  return h
}
{
def take_three_arguments(f,x,y)
  return f(x,y)
}

在这段代码中它们都是call了具有两个argument的f函数,但一个需要事先给出所有argument,而一个是在不同的阶段分别call不同的函数在接受argument,显然其更加利于我们做一些局部的改动比如想去做一些组合或者嵌套以及用例的测试。
然后这篇文章我主要是一些记录和感悟,可能不会成体系的或者仔细的去介绍一些feature或者讲解其中的project那些我会单独开一篇博文去跟进我正在做的大作业。