博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
clojure 备忘
阅读量:6733 次
发布时间:2019-06-25

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

hot3.png

看了一上午的clojure(以前也看过),到中午的时候突然觉得时间有限(最近忙于写),不打算再继续下去。晚上又觉得忘记可惜,所以写一篇博客,权当以后给自己看。

早上在研究require,use的使用,在repl下,想交互试一下,需要在当前的namespace里面找到指定的ns,从而观察require和use的效果。为了解决这个问题,还是需要了解不少clojure知识。

步骤很简单,列出全部ns,然后filter即可。

一些Macro,在repl见面会看着这些:

#' : Var-quote (#'), #'x => (var x)

比如在命令行输入:(defn anfn [x] (x)),就会看到返回值: #'user/anfn

Vars provide a mechanism to refer to a mutable storage location that can be dynamically rebound (to a new storage location) on a per-thread basis.

匿名函数Macro:

#(...) 展开之后是 (fn [arg1 arg2 ...] (...))

比如等会儿要用到的匹配函数,#(re-matches #".*\.io$" %)  -》 (fn [x] (re-matches #".*\.io$" x))

有了这些知识就可以实现开始提到的功能了:

查找以io结尾的ns:

(filter #(re-matches #".*\.io$" %) (map str (all-ns)))

输出("clojure.java.io")。

查找包含string的ns:

(filter #(re-matches #".*string.*" %) (map str (all-ns)))

任务完成。

clojure的代码看起来像天书,规则其实非常简单,回顾我们书写的大部分代码(不管任何语言),其实都只是完成了简单的功能而已,clojure可以证明这一点。

转载于:https://my.oschina.net/jianglibo/blog/222823

你可能感兴趣的文章
飞机大作战游戏 2----(运用H5和Js制作)
查看>>
Hello 畅连·西瓜 帮助与更新
查看>>
使用Vue快速开发单页应用
查看>>
黄山游记
查看>>
ES6新特性,对象的快速创建
查看>>
C语言指针相关面试题
查看>>
02.input()交互
查看>>
滚动到页面底部继续加载页面其他内容
查看>>
换用代理IP的Webbrowser方法
查看>>
Python爬虫入门(5):URLError异常处理
查看>>
梯度下降算法以及其Python实现
查看>>
LCA(最近公共祖先)——LCA倍增法
查看>>
如何理解*p++
查看>>
pageContext对象的用法
查看>>
临时改变输出数据路径
查看>>
php 关于时区 date gmdate date_default_timezone_set/get 终极答疑
查看>>
dup和dup2函数
查看>>
Java中ArrayList和LinkedList区别及原理分析
查看>>
第十三周项目2-成绩处理
查看>>
Type Conversion
查看>>