首页 > 其他分享 >CS61A: Structure and Interpretation of Computer Programs 笔记

CS61A: Structure and Interpretation of Computer Programs 笔记

时间:2023-09-27 18:24:33浏览次数:40  
标签:square Interpretation Name 指向 Programs Frame Global CS61A Local

Functions

Environment Diagrams:左侧为 Frames,右侧为 Objects。

Name 类似变量名,它们存储在 Frame 中,指向各种各样的 Objects,比如值或函数。一个 Name 同时只能指向一个 Object,但可以改变自身指向,不受“类型”影响(Name 根本没有固定的“类型”概念)。

Assignment 的过程是计算 '=' 的右值,全部算完后再与左值一一链接,进行赋值,这使得多重赋值得以实现。

image

Frames 中可能是一个 Global Frame,也可能是一系列 Local Frame 后面跟着 Global Frame。Global Frame 中存储着全局变量和各种 built-in(的 Name),Local Frame 由 User-defined Functions 创造,其 signature 即为函数的 <name>(parameters)。

在查找 Name 时,python 遵循就近原则,在最近的含有该 Name 的 Frame 中取得,如果都找不到则在 Global Frame 中寻找。

image

这是一个比较极端的例子,同时解释了函数调用时的 Environment Diagram 和 Name 查找关系。一旦进入函数体,所有的 'square' 都是在名为 square 的 Local Frame 里找到的,不会涉及 Global Frame 里那个指向 func square(square) 的 'square'。

TO BE CONTINUED

标签:square,Interpretation,Name,指向,Programs,Frame,Global,CS61A,Local
From: https://www.cnblogs.com/th19/p/17733345.html

相关文章

  • CS61A_Project Hog 复盘
    作为CS61A的第一个完整项目,整体难度较易。别出心裁地设计了一个又一个问答来函数编写,这些问题可以帮助你快速了解函数的功能以及输入输出。最大的困扰在于英语,翻译软件的部分失真导致有些题目一直理解不到位,解锁不了函数。题目翻译以及问题答案可以参考这位博主https://blog.c......
  • linux系统安装bison,解决 These critical programs are missing or too old bison comp
    1、编译 glibc过程中报错../configure--prefix=/opt/glibc-2.272、首先查看bison版本  bison--versionbison-V貌似就没有安装bison。3、使用yum安装bison yuminstallbison 安装成功。 4、查看版本:bison--version 居然这么简单就完成了。5、继续编译 glibc......
  • 题解:【ICPC WF 2021 H】 Prehistoric Programs
    题目链接#include<bits/stdc++.h>#defineldlongdouble#defineuiunsignedint#defineullunsignedlonglong#defineintlonglong#defineebemplace_back#definepbpop_back#defineinsinsert#definempmake_pair#definepiipair<int,int>#def......
  • *** These critical programs are missing or too old: compiler
     001、问题 ***Thesecriticalprogramsaremissingortooold:compiler 002、查看c编译器版本[root@PC1build]#gcc--versiongcc(GCC)4.8.520150623(RedHat4.8.5-44)Copyright(C)2015FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethe......
  • *** These critical programs are missing or too old: make compiler
     001、问题***Thesecriticalprogramsaremissingortooold:makecompiler 002、查看当前的make版本[root@PC1build]#make--version 003、make官网:http://ftp.gnu.org/pub/gnu/make/下载最新的make。 004、wgethttp://ftp.gnu.org/pub/gnu/make/ma......
  • 4、题目:Creativity in Electrical Engineering Degree Programs: Where Is the Conten
    期刊信息(1)作者:Adams,Scott(2)期刊:IEEETransactionsonEducation,2019/11,62-4:288-296(3)DOI:10.1109/TE.2019.2912834(4)ISSN:0018-9359(5)IF:2.74(Q2)研究背景先前的研究表明,工程教学大纲中包含创造力培养,课堂活动通常受到限制。学生可能认为教育工作者不重视......
  • CS61A_hw09
     defmutate_reverse(link):"""MutatestheLinksothatitselementsarereversed.>>>link=Link(1)>>>mutate_reverse(link)>>>linkLink(1)>>>link=Link(1,Link(2,Link(3))......
  • CS61A_lab14_macro
     (define-macro(switchexprcases)(cons'cond(map(lambda(case)(cons(eq?(evalexpr)(carcase))(cdrcase)))cases))) 这段代码是一个用于Scheme语言的宏定义,可以将一系列的条件分支语句转化为Scheme的cond表达式。下面是具体的......
  • CS61A_lab12_macro
     (define-macro(deffuncargsbody)`(define,(consfuncargs),body))分析:定义一个万能的函数定义,那就要模拟函数定义的样子。ok,函数定义是什么样子的呢?eg:(define(filter-lstfnlst)(if(null?lst)nil(if(fn(carlst))(cons(carlst)(fi......
  • CS61A_hw07
     #langsicp(define(uniques)(if(null?s)nil(cons(cars)(unique(filter(lambfa(x)(not(eq?x(cars))))(cdrs))))))这是一个Scheme函数,名......