Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >使用无点标识函数而不是通配符有好处吗?

使用无点标识函数而不是通配符有好处吗?
EN

Stack Overflow用户
提问于 2015-01-18 14:30:04
回答 1查看 119关注 0票数 2

如果一个函数的情况会导致输入按原样返回,那么在这种情况下使用无点id可以获得什么结果呢?

示例:

代码语言:javascript
代码运行次数:0
复制
-- First way, use some symbol as wildcard
myFunc :: Int -> SomeData -> SomeData
myFunc 0 _ = _
myFunc ...

-- Second way, point-free `id`. Is this more efficient?
myFunc :: Int -> SomeData -> SomeData
myFunc 0 = id
myFunc ...

我认为可以使用的一个标准函数是drop,因为drop 0实际上是id。但是如果你看源代码,它不是免费的(有drop 0 xs = xs .您必须向下滚动一点才能看到定义;查找drop (I# n#) ls)。我怀疑如果drop不使用它,这不会有多大关系。

编辑:实际上它看起来不允许有不同数目的参数的方程。通过案例扩展的方法来翻译多方程函数定义.

所以,如果你选择了这条路线,你必须确保函数的所有剩余方程也可以用相同的无点风格定义--这对于大多数函数来说是非常不可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 14:45:26

在GHC中,可能有不同之处。哪个更好将取决于情况。具体来说,一个函数只有在“完全应用”时才会被优化器内联。所以在第一个公式中,如果你要做一些类似的事情

代码语言:javascript
代码运行次数:0
复制
fooThing (myFunc 0)

然后(除非首先进行其他优化),GHC将生成一个表示myFunc 0的闭包,然后在fooThing决定这样做时应用它。如果您使用的是id-based实现,GHC将将上述转换为

代码语言:javascript
代码运行次数:0
复制
fooThing id
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28015570

复制
相关文章
统计函数与通配符相爱,不是意外!
首插入音乐,功放党请慎点。 海鸟跟鱼相爱,只是一场意外! 但是统计函数和通配符相爱,却是一种必然! 统计函数何许人也:Sumif、Countif、AverageIf、Sumifs、Countifs、A
用户1332619
2018/03/08
2.6K0
统计函数与通配符相爱,不是意外!
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1K0
何时使用MongoDB而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
3540
何时使用Kafka而不是RabbitMQ
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景
wayn
2023/08/28
3020
何时使用Elasticsearch而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/08/28
2580
何时使用Kafka而不是RabbitMQ
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析:
wayn
2023/08/09
6860
何时使用Elasticsearch而不是MySql
ipad越狱有什么坏处吗?_平板越狱有什么好处
1. iPad越狱是什么?iPad越狱有什么好处和坏处?不越狱又有啥缺点? 越狱就是解除一些原版固件的限制。最大的好处是可以安装激活成功教程的软件和游戏,这些软件和游戏本来都是收费的。而且,有些功能很强大的软件,并不是花钱能在官方的App Store里能买到的(某些有米之人或许会说“我就不越狱,我都花钱买正版”,我只能客气地说他只知其一不知其二),比如SBSettings, OpenSSH, Lockdown Pro, Installous, MyWi, iFile, roqyBT(这个不被Apple接受的软件,也是收费的,而且最新版没有激活成功教程,想用的话也得买,我就刚在淘宝上买了一个)等等,这些软件的存在会让你一方面觉得iPad功能实在是太强大了,另外一方面又会觉得Apple实在是太不厚道了,整出那么多限制。越狱的坏处据说是不给保修,但我没有听说过这样的例子。不越狱的缺点嘛,就是越狱后的优点都没有。 注:其实不越狱也能安装激活成功教程的ipa,有一个叫ipa god的东西,不过这个比较复杂,要求也高(貌似要mac电脑并且安装装xcode),一般人玩不转,等有空了我去整一个来试试。
全栈程序员站长
2022/09/28
5.4K0
Kaizen对非制造业有好处吗?
Kaizen是日本的管理传统,大致可以翻译为“通过改善变得更好”。这是一种管理哲学,它相信对生产系统的所有方面保持持续的警惕,并根据这种观察进行更改,以便系统始终保持在其生产效率的峰值。
用户9972271
2022/12/21
2630
android推荐使用dialogFrament而不是alertDialog
DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。 在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。 2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且Dia
xiangzhihong
2018/01/29
2.4K0
android推荐使用dialogFrament而不是alertDialog
企业使用IP证书有哪些好处?
我们在之前介绍过SSL证书中的DV、OV和EV证书的区别,也介绍过代码签名证书,邮件签名证书的作用优势,其实在“数字证书家族”中不仅仅是只包含这几类证书,还有一种比较特别的证书,它不是颁发给域名的,它是颁发给IP地址的证书,它就是IP SSL证书。
柳絮云泡泡
2023/04/25
7170
企业使用IP证书有哪些好处?
企业使用IP证书有哪些好处?
我们在之前介绍过SSL证书中的DV、OV和EV证书的区别,也介绍过代码签名证书,邮件签名证书的作用优势,其实在“数字证书家族”中不仅仅是只包含这几类证书,还有一种比较特别的证书,它不是颁发给域名的,它是颁发给IP地址的证书,它就是IP SSL证书。
柳絮云泡泡
2023/02/21
9200
企业使用IP证书有哪些好处?
使用HSB而不是RGB来定义颜色
有多种方法可以在代码中定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。可以以更直观的方式使用 HSB 属性来创建颜色搭配良好的调色板。
韦弦zhy
2023/01/06
2.7K0
使用HSB而不是RGB来定义颜色
哪个不是python合法的标识符_哪个不是python合法标识符
2. 剩下的字符可以是字母,数字和下划线,即不能包含除了下划线以外的符号(空格,运算符...)。
用户7886150
2021/01/20
3.1K0
mysql通配符_mysql通配符使用
在mysql查询中,经常会用到通配符,而且mysql的通配符和pgsql是有所不同的,甚至mysql中还可以使用正则表达式。本文就为大家带来mysql查询中通配符的使用。
全栈程序员站长
2022/09/07
1.6K0
为什么建议使用你 LocalDateTime ,而不是 Date?
多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法
芋道源码
2019/10/23
1.6K0
html 转换为cshtml,使用Html而不是csHtml
我想使用纯HTML页面而不是使用MVC .net的cshtml . 但是当我通过右键单击索引添加视图时,我只能看到两个选项 .
全栈程序员站长
2022/09/10
2.5K0
JDBC为什么要使用PreparedStatement而不是Statement
前言 这篇博客不是我写的,是由刘志军大大翻译的,真心觉得很棒,而且是必学要掌握的东西,所以就转载过来了,我个人的第一篇转载文章。 开始 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时Prepar
roobtyan
2018/06/04
1.4K0
你真的知道你喜欢REST而不是RPC的原因吗?
本文讨论的内容主要是请求风格,所以本文中所说RPC侧重于HTTP请求风格,而非java中的RPC设计模式。 有关REST和RPC的讨论或争论一直活跃在各个技术角落,最近也关注了不少,看了很多人的看法之后,我意识到这个问题可以帮助我照亮自己的知识死角:为什么我喜欢REST的请求风格(资源导向)比RPC(操作导向)多一点呢? 是因为RPC的请求风格天生邪恶吗? 还是REST就是灵丹妙药? 两种请求风格长分别长什么样子 在比较这两种请求风格之前,让我们看看他们究竟长什么样子。 HTTP 请求 RP
ImportSource
2018/04/03
1.2K0
你真的知道你喜欢REST而不是RPC的原因吗?
cas 配置https改为ip而不是使用域名
cas注销时地址是https,提示Error is [java.security.cert.CertificateException: No subject alternative names present]
lovelife110
2021/01/14
1.5K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
1K0
JDBC为什么要使用PreparedStatement而不是Statement

相似问题

使用方法而不是函数有什么好处吗?

10

使用size_t而不是无符号int有什么好处吗?

23

使用<input>而不是<textArea>有好处吗?

10

使用glGetProgramResourceLocation而不是glGetUniformLocation有好处吗?

20

使用“open()”而不是“with open()”有什么好处吗?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文