博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
clojure学习记录
阅读量:4877 次
发布时间:2019-06-11

本文共 1138 字,大约阅读时间需要 3 分钟。

take 从列表中获取子列表

into a b  把b conj 到a中

 

(defn count-a-seq [lat]

  (reduce (fn [x y] (+ x 1)) 0 lat))

reduce 将list通过fn一个个合并成一个,当然也可以只是对每个进行+1

 

(defn [x & xs]

reduce #(if (> %1 %2) %1 %2) x xs 

)

 

#(mapcat vector %1 %2)

对%1 %2每个对应元素进行vector,然后concat在一起

 

drop-last 干掉最后一个

flatten 将所有集合合并在一起

take-last 取最后几个

 

comp 返回一个将所有参数函数从右到左依次应用的函数

( (apply comp (repeat ntime (if (> n 0) lshift rshift))) coll))

 

{} #{} hash-map and hash-set

(contains? [1 1 1 1 1] 4) => true 因为contains只看index

 some 取第一个满足条件的

 

 (take 10 (map last (iterate (fn [[x y]] [y (+ x y)]) [0 1]))) 迭代器的每个元素是一个二元组,最终取出其中一个组成fib

 

 flattern

(defn flat [coll]

(mapcat
#(if (sequential? %) (flat %) [%]) coll))

 

(filter (complement sequential?) (tree-seq sequential? identity '((1 2) 3 [4 [5 6]])))

别人的版本,通过映射成树,然后收集叶子节点来进行flattern,想法不错哦

 

group-by identity coll 通过identity变成hash-map一个key一个vector的形式、

map hash-map的时候使用 (fn [[k v]] [k (count v)])

into {}  ([:b 3] [:a 2]) => {:b 3, :a 2}

(conj nil num) 这样可以建立一个'(num)

--------------

 

突然想到从cfunc - object -lisp的一个变迁的过程,可能是越来越抽象

比如map这个函数,把平时的普通循环做的事情抽象到每个做映射,这个是普通java里没有的抽象,而这种抽象在lisp里处处可见

 

前缀的=,可以任意参数的

转载于:https://www.cnblogs.com/TLightSky/p/4127418.html

你可能感兴趣的文章
[笔记] imooc《JavaScript深入浅出》对象与函数
查看>>
hdu1078FatMouse and Cheese
查看>>
jquery 处理密码输入框(input type="password" ) 模仿placeholder
查看>>
移动端touch触摸事件(滑动效果和手势操作)
查看>>
HTTP、TCP、 UDP、 IP 、 Socket的关系
查看>>
Linux终端使用技巧——个人总结
查看>>
简单通用线程池的实现
查看>>
KMP算法详解
查看>>
2019.4.27
查看>>
Linux 操作
查看>>
【3】JAVA---地址App小软件(AddPanel.class)(表现层)
查看>>
tableau
查看>>
BZOJ 3195 [Jxoi2012]奇怪的道路 | 状压DP
查看>>
Java NIO框架Netty教程(二) 白话概念
查看>>
长序列处理
查看>>
vue打包后css背景图片地址找不到
查看>>
ThoughtWorks 一道面试题及解法
查看>>
系统之锹sysdig:Linux服务器监控和排障利器
查看>>
Java环境----JDK开发环境搭建及环境变量配置
查看>>
mysql init-file参数中语句限制
查看>>