首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

clojure对( fns的)命名约定的任何工作都是开放的吗,特别是关于泛型的fns作为部分

Clojure对命名约定是非常开放的,特别是关于泛型的函数作为部分。在Clojure中,函数命名通常遵循以下约定:

  1. 函数名应该使用小写字母,并使用连字符(-)作为单词之间的分隔符。例如:calculate-age。
  2. 函数名应该具有描述性,清晰地表达函数的功能和用途。
  3. 对于泛型函数,通常会在函数名中使用类型参数的缩写或描述性词语来表示其泛化特性。例如:map,reduce。
  4. 函数名应该尽量简洁明了,避免过长的命名。

关于泛型的函数作为部分,Clojure提供了一种称为"多态函数"的机制。多态函数允许你定义一个函数,它可以接受不同类型的参数,并根据参数的类型来执行不同的操作。这种灵活性使得Clojure在处理不同类型数据时非常强大。

在Clojure中,你可以使用多态函数来处理泛型的fns作为部分。这意味着你可以定义一个函数,它可以接受一个泛型函数作为参数,并在需要时调用该函数。这种方式可以使代码更加灵活和可复用。

举个例子,假设你有一个泛型函数process-data,它接受一个函数作为参数,并对数据进行处理。你可以使用多态函数来定义一个特定类型的函数,然后将其作为参数传递给process-data函数。

代码语言:txt
复制
(defn process-data [data fn]
  (fn data))

(defn process-string [data]
  (str "Processed: " data))

(process-data "Hello" process-string)

在上面的例子中,process-data函数接受一个字符串和一个函数作为参数。然后,它调用传递的函数,并将字符串作为参数传递给该函数。在这种情况下,process-string函数将字符串进行处理,并返回处理后的结果。

总结起来,Clojure对命名约定非常开放,特别是对于泛型的函数作为部分。这种灵活性使得Clojure成为一个强大的语言,可以处理各种类型的数据和函数。对于泛型的fns作为部分,你可以使用多态函数来实现灵活和可复用的代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

javascript设计模式——发布订阅模式

前面的话   发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。...—订阅模式,小明、小红等购买者都是订阅者,他们订阅了房子开售的消息。...而售楼处的任何变动也不会影响购买者,比如售楼处工作人员离职,售楼处从一楼搬到二楼,这些改变都跟购房者无关,只要售楼处记得发短信这件事情 DOM事件   发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案...(还没有订阅相应事件),特别是在用了一些模块化惰性加载的技术后,这是很可能发生的事情。...特别是有多个发布者和订阅者嵌套到一起的时候,要跟踪一个bug不是件轻松的事情

2.6K60

《深入浅出Node.js》:Node的异步IO流程原理解析

而Node却是全方位的,既可以作为服务器去处理客户端带来的大量并发请求,也能作为客户端向网络中的各个应用进行并发请求。这就体现了Node名字的含义,是网络中灵活的一个节点。...其中异步I/O、网络请求等都是事件的发布者(trigger),这些发布请求被传递到对应的订阅者(listen)那里时,事件循环就会从订阅者那里取出事件并处理。...trigger, // 触发命名事件,必传第一个参数为事件的命名,其后参数为选传,数量不限,用于作为事件回调的实参传入 remove;...// 取消命名事件订阅,并清除该命名事件对应的事件回调 listen = function( key, fn ){ //如果还没有订阅过此命名事件,就给该命名事件创建一个数组型的缓存列表...执行回调 当组装好保有状态的请求对象、送往I/O线程池(这块我看不懂,应是C/C++内建模块涉及的操作)等待执行,实际上就是完成了异步I/O的第一部分,回调通知是第二部分。

90620
  • 为什么 CommonJS 会使你的程序包变大

    CommonJS 是 2009 年的标准,为 JavaScript 模块建立了约定。它最初打算在 Web 浏览器之外使用,主要用于服务器端。...尽管我们没有在 index.js 中使用 lodash,但它是输出的一部分,这给我们的生产环境代码增加了很多额外的东西。...";console.log(1+2)})(); 注意,最终的包中不含我们没有用到的来自 utils.js的任何函数,也没有来自 lodash 的痕迹!...在某些情况下,如果你使用的库遵循有关使用 CommonJS 的特定约定,则可以在构建时使用第三方 webpack 插件。...尽管此插件增加了对 tree-shaking 的支持,但并未涵盖依赖项可以使用 CommonJS 的所有方式。这就意味着你无法获得与 ES 模块相同的保证。

    96430

    发布订阅模式,在工作中它的能量超乎你的想象

    最近在看设计模式的知识,而且在工作当中,做一些打点需求的时候,正好直接利用了发布订阅模式去实现的,这让我对发布订阅这种设计模式更加的感兴趣了,于是借此机会也和大家说说这个好东东吧!...就这两点吗?...圈起来的广告部分,这里并不是我来负责的,需要另外一个负责对接广告业务的大牛来实现的。那么,他想要在我的推荐流中插入广告应该如何实现呢?...所以我只需要在我开发的代码中写一句话,利用上面实现的event来表示一下 // 省略.... render() { // 我只在渲染的时候 // 把约定好的key和他需要的page页码传过去就可以了...如图所示,当用户向上滑动的时候,会展示如下的内容(这才是我要讲的地方) ? 这里圈中的“猜你喜欢”部分,也是通过发请求取到数据后渲染的。然而我要做的是给“猜你喜欢”加一个展现的打点。

    60350

    发布订阅模式,在工作中它的能量超乎你的想象

    不同的语言-相同的模式 最近在看设计模式的知识,而且在工作当中,做一些打点需求的时候,正好直接利用了发布订阅模式去实现的,这让我对发布订阅这种设计模式更加的感兴趣了,于是借此机会也和大家说说这个好东东吧...就这两点吗?...圈起来的广告部分,这里并不是我来负责的,需要另外一个负责对接广告业务的大牛来实现的。那么,他想要在我的推荐流中插入广告应该如何实现呢?...所以我只需要在我开发的代码中写一句话,利用上面实现的event来表示一下 // 省略.... render() { // 我只在渲染的时候 // 把约定好的key和他需要的page页码传过去就可以了...如图所示,当用户向上滑动的时候,会展示如下的内容(这才是我要讲的地方) ? 这里圈中的“猜你喜欢”部分,也是通过发请求取到数据后渲染的。然而我要做的是给“猜你喜欢”加一个展现的打点。

    37520

    3个非常好用的JavaScript日期库

    在写项目的时候,遇到对一些时间的处理,代码写起来是相当的不方便,处理起来很纠结,于是借用JavaScript日期库,用一些前面的大牛总结好的东西,如同锦上添花一般,工作中节省了一大部分的时间,当时有空余的时间也可以去仔细倒腾一下...,今天就推荐3个比较常见的JavaScript日期库。...优点: 不依赖任何第三方库 支持字符串、Date、时间戳以及数组等格式 可以同时在浏览器和node环境中使用 前后端通用,文档也很详细 方便了日常开发中对时间的操作,提高了开发效率 ?...3: date-fns star:22.3k 网站地址:https://date-fns.org GitHub:https://github.com/date-fns/date-fns ate-fns...date-fns 提供了最全面,最简单和一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期。 ?

    10.2K31

    前端各知识点梳理(施工中...)

    注意const虽然也可以创建块作用域,但有别不let,其值是固定的常量,任何对其值的修改都会引起错误 作用域提升: 概念:就是在作用域范围内,不管内部的变量与函数声明在何处,当执行到这个作用域时,...其中字符串是基本数据类型,本身不存任何操作方法 。为了方便的对字符串进行操作,ES 提供了一个基本包装类型:String 对象 。..., fn) { //如果还没有订阅过此命名事件,就给该命名事件创建一个数组型的缓存列表,用于存放对应的事件回调 if (!...预检请求“的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响 8. 了解浏览器缓存机制吗?...因为 Webpack 只认识 JavaScript,所以 Loader 就成了翻译官,对其他类型的资源进行转译的预处理工作。

    2.4K10

    JavaScript设计模式--桥梁模式--XHR连接队列

    任何时候,我们可以暂停请求、删除请求、重试请求以及支持对各个请求的订阅事件。.../* *一个简答简单的观察者模式 * */ (function () { //1,利用空对象来设立命名空间 window.DED= window.DED||{}; DED.util...}) } } //序列 /* * 使用了观察者,序列可以装载任何对象,对象内容函数的调用方法不是由队列来完成,是观察者来执行的。...,我们只列举主要几个优点: 分离接口和实现部分,一个实现未必不变地绑定在一个接口上,抽象类(函数)的实现可以在运行时刻进行配置,一个对象甚至可以在运行时刻改变它的实现,同将抽象和实现也进行了充分的解耦,...提高可扩充性 实现细节对客户透明,可以对客户隐藏实现细节。 同时桥接模式也有自己的缺点: 大量的类将导致开发成本的增加,同时在性能方面可能也会有所减少。

    72450

    翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 4 章:组合函数

    晚点我们会讨论符合我们自然的、从左往右阅读执行顺序的模式,叫做 pipe(..)。 堆在一起的机器工作的还不错,但有些笨重了,电线挂的到处都是。创造的机器堆越多,工厂车间就会变得越凌乱。...不同的实现 当然,你可能永远不会在生产中使用自己写的 compose(..),而更倾向于使用某个库所提供的方案。但我发现了解底层工作的原理实际上对强化理解函数式编程中通用概念非常有用。...一般来说,在使用一个完善的函数式编程库时,pipe(..) 和 compose(..) 没有明显的性能区别。 抽象 抽象经常被定义为对两个或多个任务公共部分的剥离。通用部分只定义一次,从而避免重复。...DRY 力求能在程序的任何任务中有唯一的定义。代码不够 DRY 的另一个托辞就是程序员们太懒,不想做非必要的工作。 抽象能够走得更远。...开发者需要对他们程序中每个部分使用恰当的抽象级别保持谨慎,不能太过,也不能不够。 关于我们在本章中对函数的组合进行的大量讨论,看起来它的好处是实现这种 DRY 抽象。

    1.1K60

    静息态fMRI的白质功能连接:鲁棒性、​可靠性和与灰质的关系

    对整个大脑的时空组织的全面表征对于理解人类大脑的功能和功能障碍都是至关重要的。灰质静息状态功能连接(FC)有助于揭示大脑固有的基线网络。...此外,对称WM-FNs和GM感知运动系统之间的FC在精神分裂症患者中显示了异常变化,这表明GM和WM之间的连接(GM-WM)对维持人类大脑的正常功能至关重要。...对于群体层面的GM掩模,使用更宽松的阈值>20%的受试者用于识别T1图像中的GM体素,但我们排除了WM掩模中包含的任何体素。...此外,为了便于与先前关于DFC测试重测信度的研究进行比较,我们使用了与该研究相同的GM分区模板(自动解剖标记[AAL]图谱),包含116个区域(90个皮层/皮层下区域和26个小脑/蚓部区域)。...我们认识到,在本研究中,来自WM的BOLD信号被怀疑是由于部分体积效应而来自GM的下渗作用。

    47830

    结合 Vue 源码谈谈发布-订阅模式

    最近的工作学习中接触到了发布-订阅模式。该思想编程中的应用也是很广泛的, 例如在 Vue中也大量使用了该设计模式,所以会结合Vue的源码和大家谈谈自己粗浅的理解. 发布订阅模式主要包含哪些内容呢?...我们先按照上面的内容自己实现一个 Observer 对象如下: //用于存储订阅的事件名称以及回调函数列表的键值对 function Observer() { this.cache = {}...fns||fns.length===0){ return } //如果没有传入fn,那么就是取消所有该事件的订阅 if(!...Watcher:某个属性数据的监听者/订阅者,一旦数据有变化,它会通知指令(directive)重新编译模板并渲染UI 部分源码如下: 源码传送门-observer export class Observer...由于项目本身不是足够的复杂到要使用提供的 redux进行状态管理.但是在不同的组件(不限于父子组件)之间,存在相关联的异步操作.所以在wepy对象上挂载了一个本文最开始实现的Observer对象.作为部分组件之间通信的总线机制

    22810

    结合 Vue 源码谈谈发布-订阅模式

    最近的工作学习中接触到了发布-订阅模式。该思想编程中的应用也是很广泛的, 例如在 Vue中也大量使用了该设计模式,所以会结合Vue的源码和大家谈谈自己粗浅的理解. 发布订阅模式主要包含哪些内容呢?...我们先按照上面的内容自己实现一个 Observer 对象如下: //用于存储订阅的事件名称以及回调函数列表的键值对 function Observer() { this.cache = {}...fns||fns.length===0){ return } //如果没有传入fn,那么就是取消所有该事件的订阅 if(!...Watcher:某个属性数据的监听者/订阅者,一旦数据有变化,它会通知指令(directive)重新编译模板并渲染UI 部分源码如下: 源码传送门-observer export class Observer...由于项目本身不是足够的复杂到要使用提供的 redux进行状态管理.但是在不同的组件(不限于父子组件)之间,存在相关联的异步操作.所以在wepy对象上挂载了一个本文最开始实现的Observer对象.作为部分组件之间通信的总线机制

    1.5K30

    ES6中的Promise对象作用

    ),obj对象通过for in方法继承了发布订阅对象ObserverEvent的属性与方法,这样在项目中的一个页面上都可以以这个obj对象作为页面数据对象,进行事件的订阅与触发。...以下关于Promise对象的解释内容引用自《ES6标准入门》,感谢大神阮一峰的布道。 ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。...当异步任务进入栈执行时: 由于执行代码入口都是全局任务 script,而全局任务属于宏任务,所以当栈为空,同步任务任务执行完毕时,会先执行微任务队列里的任务。...它们之中任何一个抛出的错误,都会被最后一个catch捕获。...,其实就是第二种写法可以捕获前面then方法中的错误,而如果没有使用catch方法,Promise对象抛出的错误不会传递到外层代码中,即对错误异常不会有任何反应,这会导致无法debug调试。

    82220

    Java 会走向晦暗吗? Kotlin 会取而代之吗

    该图形中的Java趋势不断下降,Java很容易失去其作为一种非常流行的编程语言的地位。 Java会逐渐趋于衰落?并且会有很多不同的语言取而代之吗? ?...但是,我确实认为Java 作为一种语言将越来越多地被Kotlin所取代。其他JVM语言(Scala,Groovy,Clojure)可能试图取代Java,但他们从未真正实现过这一承诺。...但Kotlin成功的一个主要部分是它与Java的完美互操作。Kotlin很棒,因为引擎盖下,它只是Java。与普通的Java相比,Kotlin没有任何根本的不同。...Python和R可能是数据科学的工作语言,但Java仍然支持数据科学的语言。 想想所有Apache项目(Hadoop,Kafka,Solr等等) - 这些都是用Java编写的。...对于值类型,JVM本身即将发生更改,在运行时期间不会擦除泛型类型,这将使JVM作为多语言平台变得更好。

    98310

    带着问题看源码 —— exit 如何调用 atexit 处理器

    前言 之前在写 apue 系列的时候,曾经对系统接口的很多行为产生过好奇,当时就想研究下对应的源码,但是苦于 linux 源码过于庞杂,千头万绪不知从何开启,就一直拖了下来。...这里感谢 Bing 同学的介绍,感兴趣读者可以在文末参考它写的关于 glibc exit 的另一篇文章,也很不错的。...回顾之前列表建立的过程,cur 指向的是最新分配的处理器,所以调用顺序 FILO 的问题得到了解答,特别是在遍历块内部时,也是倒序遍历的 在回调前解锁,回调后加锁,这样避免用户在回调中再次调用 atexit...,但是这里一定要清楚,调用 exit 的回调其实没有返回,_exit 会保证它终结在最深层的处理器那里 最后一个特性:处理器中再次注册的 atexit 处理器能被调用,这个稍微复杂一点,需要结合之前注册部分的逻辑来看...毕竟 __run_exit_handlers 仅仅将遍历过记录的 flavor 设置为 ef_free 而没有修改任何 idx。

    34810
    领券