热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

haskell函数给出类型签名处理列表

如何解决《haskell函数给出类型签名处理列表》经验,为你挑选了1个好方法。

这看起来很像一个家庭作业问题.如果是,我强烈建议您尝试自己回答这个问题.话虽如此,我将引导您完成如何制定这个问题的答案,并希望能够让您深入了解如何处理这样的问题.

我们知道mapNew有类型a -> (a -> b -> c) -> [b] -> [c].这看起来很像现有的Prelude功能map :: (a -> b) -> [a] -> [b].所以我们可能想写下我们的答案map.

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = ...

我们总是首先用它所引用的参数写出函数,以便我们可以看到我们必须使用的部分.知道,我们只有一个单一的a,需要始终将它传递给f每个元素bbs,我们可以添加一个where子句这部分应用程序:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = ...
    where fa :: b -> c
          fa = f a

鉴于此,我们现在可以写出我们的答案map.

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = map fa bs
    where fa :: b -> c
          fa = f a

大多数haskell程序员会将此定义简化为:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = map (f a) bs

因为(f a)它是部分应用的功能fa.此外,我们可以将此表达式eta减少为:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f = map (f a)

这个答案的关键是"知道,我们只有一个语句a,需要始终将它传递给f每个元素bbs".我怎么知道这个?

由于参数多态,我们无法检查任何类型的值a.这意味着a我们可用的唯一值类型是传递给的值mapNew.此外,由于f采用单个b并生成单个c,我们知道我们必须首先从b提供的列表中获取一个以便应用f它.这正是map做,以及通过部分应用fa我们得到我们想要传递给第一个参数map.



1> acomar..:

这看起来很像一个家庭作业问题.如果是,我强烈建议您尝试自己回答这个问题.话虽如此,我将引导您完成如何制定这个问题的答案,并希望能够让您深入了解如何处理这样的问题.

我们知道mapNew有类型a -> (a -> b -> c) -> [b] -> [c].这看起来很像现有的Prelude功能map :: (a -> b) -> [a] -> [b].所以我们可能想写下我们的答案map.

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = ...

我们总是首先用它所引用的参数写出函数,以便我们可以看到我们必须使用的部分.知道,我们只有一个单一的a,需要始终将它传递给f每个元素bbs,我们可以添加一个where子句这部分应用程序:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = ...
    where fa :: b -> c
          fa = f a

鉴于此,我们现在可以写出我们的答案map.

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = map fa bs
    where fa :: b -> c
          fa = f a

大多数haskell程序员会将此定义简化为:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f bs = map (f a) bs

因为(f a)它是部分应用的功能fa.此外,我们可以将此表达式eta减少为:

mapNew :: a -> (a -> b -> c) -> [b] -> [c]
mapNew a f = map (f a)

这个答案的关键是"知道,我们只有一个语句a,需要始终将它传递给f每个元素bbs".我怎么知道这个?

由于参数多态,我们无法检查任何类型的值a.这意味着a我们可用的唯一值类型是传递给的值mapNew.此外,由于f采用单个b并生成单个c,我们知道我们必须首先从b提供的列表中获取一个以便应用f它.这正是map做,以及通过部分应用fa我们得到我们想要传递给第一个参数map.


推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 一篇关于五个编程问题的 Reddit 帖子引发了广泛讨论,特别是关于这些题目是否适合所有软件工程师。 ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • CM 创始人分享:在 GitHub 上成为开源项目的守护者
    本文由 CM 创始人 Steve Klabnik 发表在其个人博客上,详细介绍了他在 GitHub 上为 Rails 开源项目所做的贡献和经验,特别强调了如何有效管理和筛选项目中的问题。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 程序员工作区不可或缺的专业配备与物品
    为了提升编程效率和视觉舒适度,本文介绍了程序员工作区中不可或缺的专业配备与物品。作者分享了自己从家庭到办公室使用笔记本电脑的经历,指出小屏幕对视力的影响,并在近期搬家时决定改善这一状况。此外,文章还推荐了多种有助于提高工作效率和保护视力的设备,如高分辨率显示器、人体工学键盘和鼠标等。 ... [详细]
  • Python应用实例大揭秘:七大令人惊叹的高阶技巧展示
    2020年,Python无疑成为了最炙手可热的编程语言,其影响力已远远超出程序员的范畴。从初学者到资深从业者,甚至小学生,都在纷纷加入Python的学习热潮中。凭借其低门槛、易上手和强大的功能,Python正逐渐成为各行业不可或缺的工具。本文将揭示七个令人惊叹的Python高级应用技巧,帮助读者进一步提升编程水平。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
author-avatar
mobiledu2502913437
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有