AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Haskell 获得 iOS 支持,并做出多项语言和性能改进

  • 2014-05-15
  • 本文字数:932 字

    阅读完需:约 3 分钟

GHC 7.8.1最近已经发布,为Haskell 生态系统带来多项改善。Haskell 现在可以针对iOS 编译,并且增加了多项新特性,像闭合类型族、角色、重载列表、模式同义词等。

Haskell 可以通过 clang 编译成 iOS 可用的文件。这支持使用 XCode 5 的开发。由于在 Haskell 中缺少跨平台的 GUI 类库,所以现在你需要单独在 objective-C 中开发 GUI,然后从 GUI 代码中调用 Haskell 函数。尽管这项支持已经在大概七个月之前就宣布了,但这是第一个包含了这项支持的 GHC 主要版本。

但要注意的是,在 iOS 上 Template Haskell 暂时还不可用。

跨平台编译也在总体上得到了改善。例如,动态连接得到了更好的支持。GHCi 现在默认会使用系统动态连接器,以此取代内建的静态连接器。有了 GHC,你可以使用新的编译标识“–dynamic-too”,从而同时生成静态和动态的对象文件。(默认情况下 GHC 还是会使用静态连接)。

在这个版本中,还有一些特性:

  • 闭合类型族(Closed Type Families)——用于重载数据类型的类型族。闭合类型拥有在某处定义的所有等式,且不可扩展——这对于避免一些最初开发者不想得到的后果非常有用。
  • 角色——为了在使用 GeneralizedNewTypeDeriving 的时候消除类型不安全的定义
  • 重载列表(Overloaded Lists)——一种使用列表的语法糖,用于构建 Set、Map、IntMap、Vector、Text 以及 Array 等结构。
  • 模式同义词(Pattern Synonyms)
  • Typeable 现在是多类型的,这使得 Typeable1、Typeable1 等可以彼此独立。
  • 新的 I/O 管理器,会线性扩展到 32 个核上
  • 对 Template Haskell 的七项改善,像对角色的支持、注释语法、“有类型的 Template Haskell 表达式”等
  • 生成程序的并行模式
  • 针对类型本身的改善(性能提升)

在下一个版本(7.10)中可能会有突破性的改变, Applicative 会成为 Monad 的超类。为了让这种转换更容易,GHC 的当前版本会忽略以下警告:类型是 Monad 但不是 Applicative、是 MonadPlus 但不是 Alternative,以及当本地函数被声称是 join、<*>。

还有多项改变,你可以参考发布记录获得完整列表。

你还会注意到 Haskell 平台——它把 GHC 和工具绑定在一起,从而更好地与 Haskell 协作——还没有更新使用最新版本的 GHC。

查看英文原文: Haskell Gets iOS Support, Several language and Performance Improvements

2014-05-15 20:102685
用户头像

发布了 340 篇内容, 共 139.1 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

给弟弟的信第17封|拒绝自我感觉良好

大菠萝

28天写作

别做消费主义的祭品

mtfelix

模块7学习总结

Geek_1d37ea

架构实战营

🏆【Alibaba中间件技术系列】「EasyExcel实战案例」实战研究一下EasyExcel如何从指定文件位置进行读取数据

码界西柚

EasyExcel Apache POI Alibaba 12月日更

第二周作业

cqyanbo

圣诞节快到了,何不送给Ta一份程序员的浪漫

海拥(haiyong.site)

前端 代码中的浪漫 圣诞节 28天写作 12月日更

模块三作业

Vincent

「架构实战营」

从对象内存布局了解锁的膨胀

Ayue、

锁升级

在不丢失数据的情况下处理屏幕旋转 - Android

坚果

android 28天写作 12月日更

MQTT X v1.7.0 正式发布:MQTT 5.0 支持最为完整的客户端工具

EMQ映云科技

物联网 IoT mqtt

Linux之cat命令

入门小站

Linux

微信朋友圈高性能架构

Only

架构实战营 「架构实战营」

架构实战营模块2课后作业

墨宝

架构实战营模块二作业

lchx08

「架构实战营」

架构实战模块二作业

青青子衿

架构训练营 - 模块二作业

伊静西蒙

JavaScript 数组方法 .map() 的 5 个使用场景

devpoint

JavaScript map array 12月日更

轻松容器化golang应用程序

xcbeyond

golang Docker 28天写作 12月日更

架构实战营模块二作业

zhongwy

架构实战营 「架构实战营」

事业的智囊团,精神的后花园(19/28)

赵新龙

28天写作

王者荣耀商城异地多活架构设计

奔奔

元宇宙

圣迪

区块链 数字孪生 元宇宙 进化的力量 扩展现实

ArgoCD 简明教程

Se7en

实用机器学习笔记十八:过、欠拟合

打工人!

机器学习 深度学习 算法 学习笔记 12月日更

项目已成为组织发展的必要手段、企业成长的发动机

Seven的代码实验室

项目管理

学习总结 2021.12.19

mj4ever

学习笔记

模块7作业

Geek_1d37ea

架构实战营

如何做一个区块链浏览器

Rayjun

区块链 区块链浏览器

服务端质量保证体系(四) 测试环境治理

homber

服务端 质量保证 测试环境 签约计划第二季

作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业业作业作业作业作业作业作业作业作业作业作业作业作业作业

AUV

「架构实战营」

-exec rm 与 xargs rm -rf 深度剖析

liuzhen007

28天写作 12月日更

Haskell获得iOS支持,并做出多项语言和性能改进_语言 & 开发_Roopesh Shenoy_InfoQ精选文章