GHC拆分表现

 止在雲端_495 发布于 2023-02-12 14:54

splitAt以这种方式在GHC中实现:

splitAt n xs  =  (take n xs, drop n xs)

    那么,splitAt做了两倍的工作还是有一些幕后优化?

    此外,take和drop生成递归过程.这是为什么.毕竟它们是图书馆的功能,美丽并不重要.为什么不实施它们来创建迭代过程?

Chris Taylor.. 14

您正在查看的定义是Haskell报告前奏定义.

从该页面引用(强调我的)

在本章中,给出了整个Haskell Prelude.它构成了前奏曲的规范.许多定义是以清晰而非效率的方式编写的,并且不要求如此处所示实现规范.

所以在GHC来源中,当你看到

#ifdef USE_REPORT_PRELUDE
    // Haskell report prelude definition here (inefficient)
#else
    // Efficient definition here
#endif

#else如果要查看通常使用的定义,则应阅读分支 - 除非您特别要求Haskell报告定义.

1 个回答
  • 您正在查看的定义是Haskell报告前奏定义.

    从该页面引用(强调我的)

    在本章中,给出了整个Haskell Prelude.它构成了前奏曲的规范.许多定义是以清晰而非效率的方式编写的,并且不要求如此处所示实现规范.

    所以在GHC来源中,当你看到

    #ifdef USE_REPORT_PRELUDE
        // Haskell report prelude definition here (inefficient)
    #else
        // Efficient definition here
    #endif
    

    #else如果要查看通常使用的定义,则应阅读分支 - 除非您特别要求Haskell报告定义.

    2023-02-12 14:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有