编译原理
文章平均质量分 88
编译原理
SakamataZ
目前担任广告引擎工程师~
展开
-
[Haskell] CIS 194: Homework 5-8
文章目录type classesHomeWork 5Lazy evaluationtype classestype classes:对类型进行操作的类type-class polymorphic:类型类多态,相当于type classes的接口函数所以类型类Eq a =>进行类型约束,标志着a类型必须实现了==和/=关于Gradual Typing静态和动态的概念总是容易混淆,Gradual Typing指的是允许程序的一部分使用动态类型(Dynamically typed)而另一部分使用原创 2022-03-12 12:36:34 · 648 阅读 · 0 评论 -
[翻译]为什么静态语言会受到复杂性的影响?
翻译自Why Static Languages Suffer From Complexity?文章目录前言Record type - Array补充Scala HListsScala implicitRust traitScala case classesScala MonoidScala Context BoundsScala异构(IsoMerism)前言编程语言设计界的人们努力使他们的语言更具表现力,具有更强大的类型系统,主要是通过避免最终软件中的代码重复来增加代码开发的效率,然而,他们的语言越原创 2022-02-06 23:39:56 · 362 阅读 · 0 评论 -
Programming Language Pragmatics 习题解答七(类型系统)、八(子程序和控制抽象)
什么是类型系统?(1)包括一种定义类型并将它们与特定的语言结构相关联的机制以及(2)一集有关类型等价、类型相容和类型推理的规则。这些机制大多数都是Pascal、Modula、Algol、ML、Ada这些语言中提出的“计算机科学中的大多数问题都可以通过增加一层间接性来解决。”文章目录类型在程序设计中起着什么作用?类型为许多操作提供隐藏的上下文环境,使程序员不必显式地描述这种环境。类型限制合法程序中可以执行地操作集合。类型等价和类型相容之间的不同在哪里?类型等价规定两个值的类型何时相同,类原创 2021-11-26 09:56:37 · 576 阅读 · 0 评论 -
用Java写一个Java虚拟机 Class文件读取与解析
项目链接 欢迎star文章目录前言Class文件搜索Class文件解析前言参考《自己动手写Java虚拟机》这本书写一个JVM。这本书用Go写了一个jvm,没有JIT,没有PGO,甚至连GC都没有,可以说是非常的没用了,然后我用Java重写了这个JVM,Java写的Java虚拟机,没用程度可以说是更上一层楼。抛开生态不说(因为重写一个跑在本地的项目并不很需要依赖生态),Go和Java的设计理念都是趋向于简单,改写也不麻烦:原项目中使用的有栈routine可以用线程简单代替而不需要池化(数量很少)原创 2021-11-16 23:06:52 · 483 阅读 · 0 评论 -
Programming Language Pragmatics 部分习题解答 三、四、六
第三章介于词法和语法分析之间,讲的是作用域、闭包等的概念,算是PL的部分。这本书有一半的篇幅是在讲programming language的feature,然后又从编译的角度说明如何实现。第四章讲了语义分析,语法树的标注,IR之前的部分第五章讲的是目标机器的特点,翻译成的汇编语言的结构,为后端的学习做准备,相当于简单的体系结构内容,就跳过了第六章讲的是控制流,所谓控制流就是语句执行的顺序逻辑,包括:顺序、选择、迭代、过程抽象、递归、并发、非确定性。这章给出了很多有意思的例子:比如各种记法(前缀、中缀、原创 2021-10-26 08:35:22 · 344 阅读 · 2 评论 -
A Made Up Programming Language__一个小型Interpreter
assignment根据racket list构造mupllistSimilar to Racket, we can build list values out of nested pair values that end with a mupl aunit. Such amupl value is called a mupl list跟scheme一样,mupl的list也是嵌套的pair,以null结尾(define (racketlist->mupllist rst) (i原创 2021-05-19 00:13:14 · 432 阅读 · 0 评论 -
Programming Languages B(Coursera / University of Washington) Assignment4
原文件已上传到GitHub: 点这里本次作业需要racket标准库文档:https://docs.racket-lang.org/ Scheme 大法好天灭过程式 退C保平安人在做 天在看 赋值语句留祸患指针乱用天地灭 赶紧重写保平安诚心诚念SICP好 Scheme大法平安保众生都为函数来 现世险恶忘前缘Scheme弟子说真相 教你编程莫拒绝早日摆脱面向过程 早日获得新生上网搜“九评丹尼斯·里奇” 有真相文章目录小结Assignment小结因为这个课的第二部分换成了Racket原创 2021-05-17 21:20:59 · 206 阅读 · 1 评论 -
Programming Languages A(Coursera / University of Washington) Assignment 3/signature和structure
文章目录小结FeatureSML回调Closure idioms without closures小结Feature本节课介绍了很多feature,列举如下:First-Class FunctionsFunction WrapMap and FilterScopeClosureFoldCurryMutable ReferencesSML回调sml的回调机制,很多modern programming language也借鉴了这种特性。(*函数事件列表*)val cbs : (in原创 2021-05-05 16:20:09 · 321 阅读 · 0 评论 -
Programming Languages A(Coursera / University of Washington) Assignment 2
第二次作业,主要是练习pattern match这真是很棒的feature,能够很好的控制scope,达到closure效果在和别人交流的过程中,还学到了guard,存在ocaml,F#中的一种特性,但是sml没有,所以sml不内置支持range match(实际上lisp都没有内置支持) 如下图所示文章目录函数签名第一题第二题第三题函数签名第二次作业非challenge部分是写11个函数分别是val all_except_option = fn : string * string list原创 2021-04-29 23:34:54 · 246 阅读 · 0 评论 -
Programming Languages A(Coursera / University of Washington) Assignment 1
Coursera有这门课的全部资料,就不放链接了:)第一个课设一共13道题,都是sml编程题目Write a function is_older that takes two dates and evaluates to true or false. It evaluates to true if the first argument is a date that comes before the second argument. (If the two dates are the same, the原创 2021-04-21 20:52:49 · 222 阅读 · 0 评论 -
Programming Language Pragmatics 习题解答(二)
可以在这里下载书籍笔记和答案。本人很菜,出现错误在所难免,有问题请多多指正文章目录复习部分2.12.152.22.32.42.52.62.72.82.92.102.112.122.132.142.152.162.172.18练习部分2.12.22.3复习部分因为这章比较重要也比较难懂,把复习部分也做了。2.1语法和语义区别在哪里?语法分为两部分:描述语言的结构规则,根据已有的规则构造程序。用到的技术分别是:正则表达式、上下文无关语法 和 扫描器和语法分析器语义是程序的含义,对于编译型语言也原创 2020-12-17 20:28:41 · 621 阅读 · 0 评论 -
Programming Language Pragmatics 习题解答(一)
可以在这里下载书籍笔记和答案。本人很菜,出现错误在所难免,有问题请多多指正1.1以C++语言为例:a.词法错误int a=$; //$报错b.语法错误int c = .+ a; //.号报错c.静态语义错误int a=1;int c=a+b;//b没有定义d.动态语义错误访问权限错误,也可能不报错,但是实际上C++:“生成一些代码,在运行时执行适当的检查…有些规则的贯彻可能带来极高的、根本无法接受的代价,语言的实现有可能根本不去检查他们”,也就是说,这个程序"根本就是错误的程序原创 2020-11-13 16:41:43 · 516 阅读 · 0 评论