首页 > 其他分享 >Schemer学习

Schemer学习

时间:2024-10-09 23:11:07浏览次数:1  
标签:Schemer return car list 列表 学习 lst cdr

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:
        # 如果列表是空的,抛出IndexError
        raise 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:
        # 如果列表元素不足,抛出IndexError
        raise 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] + lst
    except TypeError:
        # 如果传入的对象不是列表,抛出TypeError
        raise 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 True
    if not is_atom(car(lst)): return False
    return lat(cdr(lst))

2.2 本章内容注意

标签:Schemer,return,car,list,列表,学习,lst,cdr
From: https://www.cnblogs.com/xxl404/p/18455380

相关文章

  • 国亲后的io流学习
    FileReader练习空参read流读取:读取文件夹中的内容有参read流读取:FileWriter描述练习如下:续写原文本需要在创建对象中加true,否则清空文本重写字节符:flush和close区别:存储到本地文件的方式:1当缓冲区装满8192字节,自动跳到本地文件           ......
  • js学习 -2024/10/9
    今天学习了js中的一些知识DOM通过document.get...函数获取元素对象可以查阅h3school资料找对象的函数,操作对象,//根据id获取元素对象//letid=document.getElementById('back');//id.src="../img/02.png";//根据标签获取元素对象vardivss=document.getElement......
  • 深度学习实战人脸表情识别【源码+模型+PyQt5界面】
    @目录研究背景与意义代码下载链接一、效果演示1.1图像识别1.2视频识别1.3摄像头识别二、技术原理2.1整体技术流程2.2常见七种人脸表情2.3传统人脸定位2.4深度学习人脸定位2.4.1MTCNN2.4.2RetinaFace2.4.3CenterFace2.4.4BlazeFace2.4.5YOLO2.4.6SSD2.4.7CascadeCNN......
  • 机器学习:opencv--图像拼接
    目录前言一、两个函数1.显示图像2.计算图片特征与描述符二、代码实例1.准备图像2.特征检测3.特征匹配4.图像变换5.图像融合前言图像拼接是一种将多张图像合成一幅大图的技术,常用于全景图生成、图像拼接和图像合成等应用场景。 一、两个函数1.显示图像defcv......
  • 深度学习:循环神经网络RNN
    目录一、神经网络的历程1.传统神经网络存在的问题2.提出一种新的神经网络二、RNN基本结构1.RNN基本结构2.RNN的独特结构3.RNN的局限性一、神经网络的历程1.传统神经网络存在的问题无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。因为传统神经网......
  • 基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】
    @目录研究背景代码下载链接一、效果演示1.1界面设计1.2图像融合演示11.3图像融合演示21.4图像融合演示3二、技术原理2.1引言2.2融合策略2.3深度特征的提取2.4融合策略2.4.1利用深度特征计算模糊度2.4.2去噪与平滑2.4.3图像融合三、实验分析3.1实验设置3.1.1硬件环境3......
  • 深度学习No module named ‘torchvision.transforms.functional_tensor‘问题解决
    问题在进行深度学习训练过程中出现ModuleNotFoundError:Nomodulenamed'torchvision.transforms.functional_tensor'报错,多方查阅资料后得到了解决方案。关于我的环境:CUDA==12.1torch==2.4.1GPU==4090D原先进行深度学习用的CUDA11.3,torch1.2.1,但是在训练时出现nvrtc......
  • 《机器学习初步》笔记
    第一章绪论1.1引言机器学习的经典定义:利用经验(数据)改善系统自身的性能经典的机器学习过程:机器学习最重要的理论模型:PAC(概览近似正确)1.2基本术语数据集:一组记录的集合学习/训练:通过执行某个学习算法,得到模型,学的的模型对应数据的某种潜在规律示例:不包含结果(标记label)......
  • 《机器学习初步》笔记
    第一章绪论1.1引言机器学习的经典定义:利用经验(数据)改善系统自身的性能经典的机器学习过程:机器学习最重要的理论模型:PAC(概览近似正确)1.2基本术语数据集:一组记录的集合学习/训练:通过执行某个学习算法,得到模型,学的的模型对应数据的某种潜在规律示例:不包含结果(标记label)......
  • Redis学习之缓存预热、缓存雪崩、缓存击穿、缓存穿透
    一、缓存预热    缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。问题排查1.请求数量较高2.主从之间数据吞吐量较大,数据同步操作频度较......