Programming Languages Part A Section3 翻译
这里对Section 3进行翻译。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
Coursera编程语言课程 第3节总结标准说明:本总结涵盖的材料与课堂视频以及随视频发布的材料(幻灯片、代码)大致相同。它有助于以叙述的方式阅读材料,并将整个课程部分的材料放在一份文件中,特别是在以后复习材料时。请在讨论板上报告这些笔记中的错误。
目录
介绍和一些术语
将函数作为参数
以多态类型和函数作为参数
匿名函数
不必要的函数封装
Maps和filters
返回函数
不仅仅适用于数字和列表
词法作用域
环境和闭包
(愚蠢的)包括高阶函数的例子
为什么要使用词法作用域
将闭包传递给迭代器,如filter
Fold和更多的闭包实例
另一个闭包习语:合并函数
另一个闭包习语:currying和部分应用
值限制
通过ML引用进行突变
另一个闭包习语:回调
可选的:另一个闭合习语:抽象数据类型
可选的:其他语言中的闭包
...
Programming Languages Part A Exam
这次回顾Part A Exam。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
问题1Check a box if and only if it is an accurate description of ML
ML uses lexical scope for the semantics of looking up variables in the environment
正确
ML has no language constructs for creating mutable data
ML has a REPL as part of the definition of the language
ML is statically typed
正确
问题2Here is a particular list of pairs in ML:
[(4,19), (1,20), (74,75)]
F ...
Programming Languages Part A Practice Exam
这次回顾Part A Practice Exam。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
问题1Check a box if and only if it is an accurate description of ML
Function arguments are evaluated before being passed to functions.
正确
ML is dynamically scoped.
不正确
All functions can be called recursively.
匿名函数不可以,不正确
Functions are first-class expressions
正确
问题2Check a box if and only if it is an example of unnecessary function wrapping
fun incre ...
CMU 15-418 Assignment 1 Exploring Multi-Core and SIMD Parallelism
课程主页:https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/index.html
课程视频:https://www.bilibili.com/video/BV11A411c7pF
CMU 15-418的课程名为Parallel Computer Architecture and Programming,主要介绍并行计算相关内容。这里回顾Assignment 1,主要是熟悉多核的基本操作,利用ISPC编写一些并行程序。
参考资料:
https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/assignment_writeups/asst1/asst1.pdf
http://15418.courses.cs.cmu.edu/spring2016/article/3
https://github.com/ispc/ispc
https://ispc.github.io/example.html
https://www.cnblogs.com/ggjucheng/a ...
Programming Languages Part A HW3 Extra Practice Problems
这次回顾HW3 Extra Practice Problems,主要是Standard ML的头等函数和高阶函数。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
习题内容:
https://www.coursera.org/learn/programming-languages/supplement/cVK0L/extra-practice-problems
参考资料:
https://www.coursera.org/learn/programming-languages/discussions/forums/c7p3Kij0Eea7jBLLHPwd0w/threads/MMocZllWEeaDAA56pliawQ
https://www.coursera.org/learn/programming-languages/discussions/forums/c7p3Kij0Eea7jBLLHPwd0w/ ...
Programming Languages Part A HW3
这次回顾HW3,主要是Standard ML的头等函数和高阶函数。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
参考资料:
https://smlfamily.github.io/Basis/manpages.html
https://www.coursera.org/learn/programming-languages/discussions/weeks/4/threads/SUxukGoiEeuw8Q5h5Kj7KQ
https://www.coursera.org/learn/programming-languages/discussions/weeks/4/threads/shBA0anQEeayTApmbCmbWA
https://www.coursera.org/learn/programming-languages/supplement/FEymH/hints-and-gotchas-f ...
Programming Languages Part A Week 4笔记
这次回顾Week4的内容,主要介绍了Standard ML的头等函数和高阶函数。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
Week 4头等函数(First-Class)简介什么是函数式编程?“函数式编程”可能意味着一些不同的事情:
在大多数/所有情况下(已完成和正在进行)避免突变
将函数用作值(本节)
鼓励递归和递归数据结构的风格
更接近数学定义的风格
使用惰性的编程习语(稍后的主题,简要介绍)
不是OOP或C的东西?(不是一个好的定义)
除了”让函数式编程变得简单/默认/必需”之外,不确定是否存在”函数式语言”的定义。
对某一种语言没有明确的是/否
头等函数
头等函数:可以在我们使用值的地方使用它
函数也是值
参数、结果、元组的一部分、变量绑定、由数据类型构造器或异常
例子:
fun double x = 2*x
fun incr x = x+1
val a_ ...
Programming Languages Part A Section2 翻译
这里对Section 2进行翻译。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
Coursera编程语言课程 第2节总结标准说明:本总结涵盖的材料与课堂视频以及随视频发布的材料(幻灯片、代码)大致相同。它有助于以叙述的方式阅读材料,并将整个课程部分的材料放在一份文件中,特别是在以后复习材料时。请在讨论板上报告这些笔记中的错误。
目录
构建新类型的概念性方法
记录:另一种处理”Each-of”类型的方法
按名称与按位置,法糖,以及关于元组的真相
数据类型绑定:我们自己的“One-of”类型
ML如何不提供对数据类型值的访问
ML如何提供对数据类型值的访问:Case表达式
有用的”One-of”类型的例子
到目前为止,数据类型绑定和Case表达式的精确介绍
类型同义词
Lists和Options是数据类型
多态数据类型
Each-of类型的模式匹配:关于变量绑定的真相
题外话:类型推理
题外话:多态类型和 ...
Programming Languages Part A HW2 Extra Practice Problems
这次回顾HW2 Extra Practice Problems,主要是Standard ML模式匹配的补充练习。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
习题内容:
https://www.coursera.org/learn/programming-languages/supplement/JXL99/extra-practice-problems
代码(* problem 0 *)
fun length_of_a_list(list) =
case list of
[] => 0
| a::b => 1 + length_of_a_list(b)
(* problem 1-4 *)
type student_id = int
type grade = int (* must be in 0 ...
Programming Languages Part A HW2
这次回顾HW2,主要是Standard ML的模式匹配使用。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
参考资料:
https://www.coursera.org/learn/programming-languages/discussions/weeks/3/threads/Ar4KF5_jEeaeFgp1HJGIrg
https://www.coursera.org/learn/programming-languages/discussions/weeks/3/threads/0WNdrHcGEemcmw7X3MnCag
https://www.coursera.org/learn/programming-languages/discussions/weeks/3/threads/hpc-WA3EEeivSw79CbecQA
https://blog.csdn.net/mdzzname/artic ...
Programming Languages Part A Week 3笔记
这次回顾Week3的内容,主要介绍了Standard ML的模式匹配。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
Week 3构建新类型的方法如何构建更大的类型
已知:
具有各种基本类型,如int bool unit char
构建(嵌套)复合类型的方法:元组、列表、选项(option)
即将推出:
构建复合类型的更多方法
首先:任何语言中3个最重要的类型构建块
“每个”(“Each of”):一个t值包含t1 t2 ... tn中的每个值
“其中一个”(“One of”):一个t值包含t1 t2 ... tn中的某一个值
“自引用”(“Self reference”):一个t值可以引用其他t值
值得注意的是,很多数据都可以用这些构建块构件
注意:这些不是这些概念的通用名称
例子
元组构建each-of类型
int * bool包含int和bool
选项(option)构建 ...
Programming Languages Part A HW1 Extra Practice Problems
这次回顾HW1 Extra Practice Problems,主要是Standard ML的基本语法的补充练习。
课程主页:
https://www.coursera.org/learn/programming-languages/home
B站搬运:
https://www.bilibili.com/video/BV1dL411j7L7
习题内容:
https://www.coursera.org/learn/programming-languages/supplement/U9go7/extra-practice-problems
参考资料:
https://www.coursera.org/learn/programming-languages/discussions/weeks/2/threads/02J1s1xGEeacUxJKPndtzw
https://www.coursera.org/learn/programming-languages/discussions/weeks/2/threads/39sQuuhVEeitYQrtYWh77A
代码(* help ...