当前位置: 首页 > news >正文

在Common Lisp中使用 List Comprehension

在 Python 和 Haskell中有非常简洁强大的 List Comprehension 用法:

>>> [(x, y) for x in range (1, 4) for y in ["A", "B"]] [(1, 'A'), (1, 'B'), (2, 'A'), (2, 'B'), (3, 'A'), (3, 'B')]

在 Common Lisp 中可以用 incf-cl 库来实现, 通过 quicklisp 安装很方便:

* (ql:quickload "incf-cl") To load "incf-cl": Load 1 ASDF system: cl-ppcre Install 1 Quicklisp release: incf-cl ; Fetching #<URL "http://beta.quicklisp.org/archive/incf-cl/2010-10-06/incf-cl-20101006-git.tgz"> ; 14.63KB ================================================== 14,981 bytes in 0.01 seconds (1044.99KB/sec) ; Loading "incf-cl" .................................................. [package incf-cl]..... ("incf-cl") * (use-package :incf-cl) T * (lc (cons x y) (<- x (range 1 3)) (<- y '(a b))) ((1 . A) (1 . B) (2 . A) (2 . B) (3 . A) (3 . B))

incf-cl 是模仿的Haskell的语法:

Prelude> [(x, y) | x <- [1..3], y <- ["A", "B"]] [(1,"A"),(1,"B"),(2,"A"),(2,"B"),(3,"A"),(3,"B")]

相关文章:

  • 基础数据结构
  • C++ VS C#(11):结构体和对象的细微区别
  • 数据库被黑后留下的数据
  • 通过html字符串连接组合并调用javascript函数
  • ARM+LINUX移植攻略(十)支持东华 3.5寸LCD输出console信息和BMP图片、logo
  • 字符串截取函数slice, substring, substr
  • ARM+LINUX移植攻略(十二)U-boot-2009.08利用tftp服务下载内核和利用nfs服务挂载nfs文件系统...
  • 快速排序(转)
  • Windows Phone 7 不温不火学习之《Expression Blend 创建渐变效果和创建Storyboard动画》...
  • DelphiXE8FMX工程实现无边框托动(发送消息)
  • Vue 响应式总结
  • Iphone开发中的两个小bug,1.调用camera时的内存警告导致view自动upload,2,Not enough frames in stack....
  • 自己动手做计算机-计算机科学的本质
  • angularjs 中使用 service 在controller 之间 share 对象和数据
  • 流媒体技术学习笔记之(八)海康、大华IpCamera RTSP地址和格式
  • ----------
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • C++类中的特殊成员函数
  • EOS是什么
  • JAVA之继承和多态
  • React-redux的原理以及使用
  • SOFAMosn配置模型
  • spring boot下thymeleaf全局静态变量配置
  • Terraform入门 - 3. 变更基础设施
  • 对超线程几个不同角度的解释
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 解析带emoji和链接的聊天系统消息
  • 力扣(LeetCode)357
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前嗅ForeSpider采集配置界面介绍
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 收藏好这篇,别再只说“数据劫持”了
  • 微服务框架lagom
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一道面试题引发的“血案”
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #《AI中文版》V3 第 1 章 概述
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)STL算法之元素计数
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (六)c52学习之旅-独立按键
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)RocketMQ初步认识
  • (转)jdk与jre的区别
  • ./configure,make,make install的作用
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .java 9 找不到符号_java找不到符号
  • .naturalWidth 和naturalHeight属性,
  • .Net core 6.0 升8.0
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args