zoukankan      html  css  js  c++  java
  • clojure学习记录

    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))

    https://github.com/qiuxiafei/4clojure/blob/master/answers/28.Flatten%20a%20Sequence

    (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里处处可见

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

  • 相关阅读:
    css3样式二
    CSS3样式
    css基础样式四
    css样式基础三
    CSS样式基础二
    Css样式基础
    html(二)
    html(一)
    Linux 下 Memcached 缓存服务器安装配置
    java.lang.OutOfMemoryError: Java heap space解决方法
  • 原文地址:https://www.cnblogs.com/TLightSky/p/4127418.html
Copyright © 2011-2022 走看看