Schemer学习

news/2024/10/9 23:22:53

scheme十戒五律

0.1 scheme十戒

0.2 scheme五律

五法 内容
car之法则 基本元件car仅定义为针对非空列表(获取第一个元素)
cdr之法则 基本元件cdr仅定义为针对非空列表,任意非空列表的cdr总是另一个列表
cons之法则 基本原件cons需要两个参数, 第二个参数必须是一个列表, 结果是一个列表
null? 之法则 基本元件null?进定义为针对列表
eq?之法则 基本元件eq?需要两个参数, 每个参数都必须是一个非数字的原子

Ch1 玩具总动员

名词解释:

  • atom: 原子
  • list: 列表
  • collection: 集合
  • S表达式: scheme中所以元素都可以叫做S表达式。

1.1 本章基本函数

1.1.1 car函数

def car(lst: List) -> Any:"""Returns the first item in lst"""assert isinstance(lst, list), "must provide a list!"try:# 尝试获取第一个元素return lst[0]except IndexError:# 如果列表是空的,抛出IndexErrorraise IndexError(f"func-car: The provided {lst} is empty")

1.1.2 cdr函数

def cdr(lst: List) -> List:"""Returns all items in lst after the first one"""assert isinstance(lst, list), "must provide a list!"try:# 跳过第一个元素return lst[1:]except IndexError:# 如果列表元素不足,抛出IndexErrorraise IndexError(f"func-cdr: The provided {lst} has insufficient elements")

1.1.3 cons函数

def cons(item: Any, lst: List) -> List:"""Returns a new list with car_item as the first element followed by elements of lst"""assert isinstance(lst, list), "must provide a list!"try:# 创建新列表,包含 car_item 和 lst 的元素return [item] + lstexcept TypeError:# 如果传入的对象不是列表,抛出TypeErrorraise TypeError(f"func-cons: The provided object {lst} is not a list")

1.1.4 is_null函数

def is_null(lst: List) -> bool:"""Returns True if lst is empty, False otherwise"""assert isinstance(lst, list), "must provide a list!"return not lst

1.1.5 is_atom函数

def is_atom(s: Any) -> bool:"""Returns True if obj is an 'atomic' type (int, float, str, bool), False otherwise"""return isinstance(s, (Number, str, bool))

1.1.6 eq函数

def eq(a: Any, b: Any) -> bool:"""Returns True if a is equal to b, False otherwise"""assert isinstance(a, (str, bool)), "must provide a no Number atom!"assert isinstance(b, (str, bool)), "must provide a no Number atom!"return a == b

1.2 本章内容注意

注意点:

  • (car l) 是获取l的第一个元素, 两端的括号只是代表这是一个过程了
  • (cdr l)只返回一个元素时, 要在外面加上一层列表哦

Ch2 处理, 处理, 反复处理

2.1 本章基本函数

2.1.1 cond函数

2.1.2 lat函数

def lat(lst: List) -> bool:"""返回列表是否全部由原子组成"""assert isinstance(lst, list), "must provide a list!"if is_null(lst): return Trueif not is_atom(car(lst)): return Falsereturn lat(cdr(lst))

2.2 本章内容注意

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/69613.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Day 3 2024年10月9日

1. 螺纹钢多单波段机会 准备介入5-3。 螺纹看好走出5波牛市黎明的曙光。

第七次作业

1、在不依赖于DVWA后端数据库的情况,如何通过前端验证的方法判断DVWA中的注入点是数字型注入还是字符型注入?(提示:用假设法进行逻辑判断) 1.输入1 and 1=1查询有两种情况: (1)数字型注入 输入内容没有被网站做任何处理,能查询到 输入内容被网站做任何处理,通过隐式转…

ipad mini2 绕过激活锁

本人博客原文链接:https://drcodes.cn/2024/09/25/ipad-mini2-bypass-icloud-activation-lock/ 前言 这几天刷微博刷到一条被锁10年的iPhone终于解锁的视频,被称之为「时间胶囊」,我评论了之前解锁iPad2的经过,不刷机,找回忘记密码的老iPad中的数据!-爱写代码的小医生 (d…

现代C++编程初体验

实验任务1: task1.cpp1 #include <iostream>2 #include <string>3 #include <vector>4 #include <algorithm>5 6 using namespace std;7 8 // 声明9 // 模板函数声明 10 template<typename T> 11 void output(const T &c); 12 13 // 普通函…

cf2009 Codeforces Round 971 (Div. 4)

A. Minimize! 签到题。计算\((c-a)+(b-c)\)的最小值,其实值固定的,等于\(b-a\)。 int a, b;void solve() {cin >> a >> b;cout << b - a << endl; }B. Osu!mania 签到题。给定一个4k下落式的网格,求#下落顺序。直接数组记录就好了。 int n; const i…

KMP循环节

KMP循环节 在icpc 2019 China Collegiate Programming Contest Qinhuangdao Onsite J. MUV LUV EXTRA由题易得,要求这个数的小数部分的\(S=a循环长度−b循环节的长度\),让这个S尽可能的大。 又因为对于循环长度我们可以用kmp算法来求出最小循环节,所以我们可以枚举循环长度去…

js学习 -2024/10/9

今天学习了js中的一些知识 DOM 通过document.get...函数获取元素对象 可以查阅h3school资料找对象的函数,操作对象,//根据id获取元素对象 // let id = document.getElementById(back); // id.src = "../img/02.png";//根据标签获取元素对象 var divss = document.get…

渗透测试作业3

使用wireshark对同一网络下的qq信息进行抓包 首先我们需要知道的是因为qq为了保障消息的及时性,所以当两个设备在同一网域的时候,此时我们发的消息是不会经过保密的,这就给了我们很大的操作空间,那么接下来我会用两种方法来给大家展现一下如何在同一网络下,对QQ的信息进行…