首页 > 其他分享 >CLISP学习(一)

CLISP学习(一)

时间:2023-01-09 12:22:42浏览次数:34  
标签:函数 Lisp ooooo 学习 CLISP 求值 实参 表达式

Lisp

Lisp发表于1960,是由数学家约翰·麦卡锡发明的。

在计算机有所发展时,数学家们对人工智能有着极大的兴趣,觉得可以实现一个共通的方法,使计算机能够处理链表中的符号数据,允许语言的处理、信息存入和检索、定理证明的过程机器化。

约翰·麦卡锡于1958年回到麻省理工,和Marvin Minsky组成了人工智能项目。开展一个表处理软件系统的工作,尔后推动了表处理语言LISP的诞生

lisp是世界上第二古老的程序语言,难以想象的是,这么多年过去了,它仍焕发生机,在人工智能上独具风骚。

安装

这里安装的是clisp,我的是Debain Linux

在Debian中:

sudo apt install clisp

 

在macOS中

使用 MacPorts
sudo port install clisp

或

使用 Homebrew
brew install clisp

 

在windows就上官网下载就好

函数式语言

LISP是函数式编程,所有的输入都被认为是函数,函数就要有函数名,参数和表达式。

(+ 1 2)

3

就比如上面这个,‘+’是一个 加法函数,1和2成为了这个函数的参数,(加法函数由于是lisp自带的基本函数,所以它的表达式(或者说计算式)早以被定义好了,所以咱们并没有看到它的计算式是什么样的)

这样就构成了一个表达式。回车返回3。

基本格式:(它可以接受很多参数)

(函数名 参数1 参数2 ...)

lisp 函数式语言 处理的是列表

Lisp 的基本形式是 表,基本单元是表达式,就比如上面这个,它就是一个列表,它的表达式由 加法函数+、参数‘1’、‘2’组成。

lisp嘛,List Processing --> 列表处理.

具体以后再说。

 

它是函数语言的同时,也是交互式语言(就像python一样)

在命令行中输入 clisp

$ clisp

  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.49.93+ (2018-02-18) <http://clisp.org/>

Copyright (c) Bruno Haible, Michael Stoll 1992-1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2018

Type :h and hit Enter for context help.

[1]>

 

你就可以像上面的 (+ 1 2)一样来试试,+  -  *  /

就比如

(/ 4 4 2 2)

结果发现什么?非常人性化的输出了1/4

当然还可以内嵌列表,如

[1]> (/ (- 4 7) (+ -1 6))
-3/5

求值

我们来理解一下表达式是如何被求值的。

在 Lisp 里, + 是函数,然而如 (+ 2 3) 的表达式,是函数调用。

当 Lisp 对函数调用求值时,它做下列两个步骤:

  1. 首先从左至右对实参求值。在这个例子当中,实参对自身求值,所以实参的值分别是 2 跟 3 。
  2. 实参的值传入以操作符命名的函数。在这个例子当中,将 2 跟 3 传给 + 函数,返回 5 。

如果实参本身是函数调用的话,上述规则同样适用。以下是当 (/ (+ 2 4) (- 2 7)) 表达式被求值时的情形:

  1. Lisp 对 (+ 2 4) 求值: 2求值为 2, 4 求值为 4 ,它们被传给函数 +,返回 6 。
  2. Lisp 对 (- 2 7) 求值: 2 求值为 2, 7求值为 7 ,它们被传给函数 - ,返回 -5 。
  3. 数值 6 与 -5 被传入函数 / ,返回 -6/5 。

但不是所有的 Common Lisp 操作符都是函数,不过大部分是。函数调用都是这么求值。由左至右对实参求值,将它们的数值传入函数,来返回整个表达式的值。这称为 Common Lisp 的求值规则。

标签:函数,Lisp,ooooo,学习,CLISP,求值,实参,表达式
From: https://www.cnblogs.com/iceshadow/p/17036660.html

相关文章

  • CLISP学习(二)
    它是一门函数式语言,你要用函数的思维来思考。只不过与数学的表达不同的是,数学里的函数是在括号外 f(x),而lisp是在括号内,以列表的形式(fx),cos(x)-->(cosx)。lisp不区......
  • fabric2.2学习笔记1
    fabric2.2学习笔记120201303张奕博2023年1月9日hyperledgerfabric结构分析每个Server作用:AdminServer:控制该节点的命运,可以删除该节点所在的进程。(StartStopGet......
  • CCSP学习笔记-NIST 800-145
    本文英文版来自美国国家标准与技术实验室的文档SpecialPublication800-145《TheNISTDefinitionofCloudComputing》September2011版本。一 云计算概念定义Clo......
  • Linux学习笔记:终端删除键失效解决办法
    一、删除键变空格近日在安装vi时遇到报错,遂卸载了部分包进行重新安装。安装后出现终端乱序,输错命令按Backspace删除键进行删除时不能删除反而添加空格,并且导致某些快......
  • 机器学习16:简单, 直观的方法理解CNN(卷积神经网络)核心原理及实现
    1.CNN(卷积神经网络)的典型应用场景1.1WaveNet模型:​​https://deepmind.com/blog/wavenet-generative-model-raw-audio/​​如果你能训练人工智能机器人唱歌,干嘛还训练它......
  • 【linux】RabbitMQ学习-vhost 详解
    vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、绑定、交换器和权限控制;vhost通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密地运行数据;vhost是......
  • Linux学习记录(四)Shell编程
    0、学习shell的目的:方便运维;编写shell程序管理集群、提高开发效率;1、Shell概述(1)shell是解释器;​ 核心:硬件系统(主机+外设);​外层:操作系统;​......
  • Linux学习记录(五)DHCP服务器配置(Net模式)
    一、DHCP协议DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情......
  • 2023.1.9 学习
    一、优势相比传统的机械传感器,MEMS具有着巨大的竞争优势:1.MEMS传感器具有着体积小、重量轻、功耗低的特点。其内部结构可达微米甚至纳米量级。同时其内部的机械部件由于......
  • 近几日的算法学习(背包问题+回溯递归算法)附例题
    最近两天都没有更新博客力(其实是去学了些算法,算是对计算机科学有了全新的认识吧(我之前在课本学的是什么勾八玩意儿)CP1055  有多少个数的和是素数(经典的回溯算法,暴力枚......