热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql返回pair_Scheme中的pair和list简述

pair(cons12)(1.2)系统返回(1.2)。cons操作给两个地址分配了内存空间,并把存放指向1的地址放在一个空间,把存放指向2的地址放在另

pair

(cons 1 2)

> (1 . 2)

系统返回(1 . 2)。cons 操作给两个地址分配了内存空间,并把存放指向 1 的地址放在一个空间,把存放指向2的地址放在另一个空间。存放指向1的地址的内存空间被称作 car 部分,对应的,存放指向2的地址的内存空间被称作 cdr 部分。

car 和 cdr 分别是寄存器地址部分(Contents of the Address part of the Register)和寄存器减量部分(Contents of the Decrement part of the Register)的简称。这些名字最初来源于 Lisp 首次被实现所使用的硬件环境中内存空间的名字。这些名字同时也表明 Cons 单元的本质就是一个内存空间。

cons 这个名字是术语构造(construction)的简称。

(cons 1 (cons 2 (cons 3 (cons 4 5))))

=> (1 2 3 4 . 5)

(1 2 3 4 . 5) 是对 (1 . (2 . (3 . (4 . 5)))) 的一种简化。

> (cadr f)

2

> (car (cdr f)) ;等价

2

> (define f (cons 1 (cons 2 (cons 3 (cons 4 5)))))

> f

(1 2 3 4 . 5)

> (car f)

1

> (cdr f)

(2 3 4 . 5)

> (cadr f)

2

> (define f (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 6))))))

> f

(1 2 3 4 5 . 6)

> (cddddr f)

(5 . 6)

> (cdddddr f)

. . cdddddr: undefined;

cannot reference undefined identifier

最多支持四级操作。c...r

> (define f (cons 1 2))

> f

(1 . 2)

> (set-car! f 10)

> f

(10 . 2)

> (set-cdr! f 20)

> f

(10 . 20)

> (define f (cons 1 (cons 2 3)))

> f

(1 2 . 3)

> (set-cdr! f 4)

> f

(1 . 4)

使用 set-car! 或 set-cdr! 修改 .

list

> '(1 2 3)

(1 2 3)

> (list 1 2 3)

(1 2 3)

> (define f (list 1 2 3))

> f

(1 2 3)

> (list-ref f 0) ;通过索引取值

1

> (list-ref f 2)

3

> (list-tail f 2) ;返回给定索引及以后的所有值

(3)

> (list-tail f 0)

(1 2 3)

pair?, list? 和 null? 判断过程可以分别用来检查它们的参数是不是一个序对,列表或空列表。

Scheme 中的 booleans 类型用 #t、#f 来分别表示 true 和 false 。

> (pair? '(1 . 2))

#t

> (pair? '(1 2))

#t

> (pair? '())

#f

> (pair? '(1 . 2))

#t

> (pair? '(cons 1 2))

#t

> (pair? '(1 2 3))

#t

> (pair? (list 1 2 3))

#t

> (list? '(1 2 3))

#t

> (list? (cons 1 2))

#f

> (list? (cons 1 (cons 2 3)))

#f

> (list? (cons 1 (cons 2 '())))

#t

> (list? (cons 1 '()))

#t

> (null? '())

#t

> (list 1 2 3 4)

(1 2 3 4)

> (define f (cons 1 (cons 2 (cons 3 (cons 4 '())))))

> f

(1 2 3 4)

> (list? f)

#t

25db64f9aa3333f22bd24fd540cc2e89.png

连续的点对且以nil('())结尾,形似 C语言 的链表,而用list?判断得到的结果也为真。

在 SICP 一书中 nil 用于表示序对 ( pair ) 的链结束,也可以当作一个不包含任何元素的序列,空表。

不过作者推荐直接使用 '() 表示空表,而舍弃变量 nil 。

> (define f (list 1 2 3 4))

> f

(1 2 3 4)

> (car f)

1

> (cdr f)

(2 3 4)

> (cddr f)

(3 4)

> (caddr f)

3

可以向前面一样使用 car 和 cdr 。

> (define x '(1 2 3))

> (define y '(4 5 6))

> (define z (append x y)) ;合并两个 list

> z

(1 2 3 4 5 6)

> x

(1 2 3)

> y

(4 5 6)

Scheme中一些函数在C++里面的实现与吐槽

最终我失败了,这是显而意见,我试图在一个很看重类型是什么的语言中实现无类型操作,事实上,哪怕我实现了基本的cons,car,cdr,list后面的代码也无法写下去.比如说list-n,根据 ...

Eclipse中配置SVN(步骤简述)

————Eclipse中配置SVN(步骤简述)———— 1.有客户端(tortoiseSVN),服务器端(visualSVN) 两种,根据需要安装,安装后需重启电脑 2.服务器端配置:创建版本库(放工 ...

C++中的pair,make_pair学习

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型.例如std::pair 或者 std::pair

spark中的pair rdd,看这一篇就够了

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第四篇文章,我们一起来看下Pair RDD. 定义 在之前的文章当中,我们已经熟悉了RDD的相关概念,也了解了RDD基 ...

Python中的file和open简述

help(file) help(open) 老规矩先看一下内置的帮助文档怎么描述file和open,毕竟官方文档是最直接最准确的描述. Help on class file in module __b ...

scheme 中的宏使用

#lang scheme ( define-syntax my-when     ( syntax-rules ()       [ ( _ pred body ... )         ( if ...

MySQL中的SQL流程分析简述

分析MySQL中这条语句的整个流程 update table_a set c1=xx where c2=xxx 朋友考我的一个问题在此处列出个人见解 1 客户端连接进来首先进行权限验证 2 验证通过后 ...

vector中插入pair

我们知道map和multimap的作用,这两种数据类型在存储数据时,会根据pair<>的first成员进行排序,不同的时前者将不会插入对first成员重复的结构,后者可以.那如果我们只想存 ...

Zookeeper中的FastLeaderElection选举算法简述

Zookeeper是一个开源的分布式应用协调项目, 当中为了保证各节点的协同工作,Zookeeper在工作时须要有一个Leader. 而Leader是怎样被选举出来的?Zookeep中使用的缺省算法称 ...

随机推荐

【JUC】JDK1.8源码分析之CyclicBarrier(四)

一.前言 有了前面分析的基础,现在,接着分析CyclicBarrier源码,CyclicBarrier类在进行多线程编程时使用很多,比如,你希望创建一组任务,它们并行执行工作,然后在进行下一个步骤之前 ...

[深入浅出WP8.1(Runtime)]文本块(TextBlock)

4.3 文本块(TextBlock) 文本块(TextBlock)控件是用于显示少量文本的轻量控件,可以通过TextBlock呈现只读的文本,你可以把TextBlock控件理解为一种纯文本的展示控件. ...

okhttp 基本介绍

资料汇总 官网:http://square.github.io/okhttp/ 文档:https://github.com/square/okhttp/wiki GitHub:https://gith ...

latch:library cache

一:硬解析造成的shared pool latch 争用: 每一个sql被执行之前,先要到library cache中根据hash_value查找parent cursor,这就需要先获得librar ...

PHP DES加密

public function encrypt($str) { //$str &#61; "hh"; $key &#61; "key:123";//密钥 $cipher &#61; M ...

Fiddler设置代理(PC和Android)

Fiddler设置 打开Fiddler,进入Tools--->Fiddler Options,勾选以下信息:   OK,就配置完成了.   PC端设置: 以火狐为例,打开选项--->高级 ...

Linux之用户与用户组

1.Linux是一种 多用户多任务分时操作系统. 2.Linux的用户只有两个等级:root用户和非root用户.   Linux系统默认 内置了root用户 和一些非root用户,如nobody,a ...

Linux&#160;时间及时区设置

时间以及时区设置 by:授客 QQ:1033553122 1.首先确认使用utc还是local time. UTC(Universal Time Coordinated)&#61;GMT(Greenwich ...

Codeforces 264 B. Good Sequences

B. Good Sequences time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

HDU - 5130 &#xff1a;Signal Interference (多边形与圆的交)

pro:A的监视区域是一个多边形. 如果A的监视区的内满足到A的距离到不超过到B的距离的K倍的面积大小.K<1 sol:高中几何体经验告诉我们满足题意的区域是个圆,那么就是求圆与多边形的交. # ...



推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 本文介绍如何通过 Python 的 `unittest` 和 `functools` 模块封装一个依赖方法,用于管理测试用例之间的依赖关系。该方法能够确保在某个测试用例失败时,依赖于它的其他测试用例将被跳过。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • FIND_IN_SET() 函数用于检查一个字符串是否存在于由逗号分隔的字符串列表中。其语法为:FIND_IN_SET(str, strlist)。该函数返回一个整数值,表示字符串 str 在字符串列表 strlist 中的位置。如果 str 存在于 strlist 中,则返回值范围从 1 到 N(N 为列表中的元素数量)。若未找到,则返回 0。此函数在处理多值字段时非常有用,例如在查询用户权限或标签匹配等场景中。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
author-avatar
多米音乐_34429718
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有