You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ClassyPrelude为newtype X派生IsSequence及相关类的实现方案

完整的Haskell实现文件

下面是满足你需求的完整代码,包含必要的语言扩展、导入以及X类型的定义:

{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

import ClassyPrelude

newtype X = X [Int]
  deriving newtype (MonoFunctor, MonoFoldable, MonoTraversable,
                    Monoid, GrowingAppend, SemiSequence, MonoPointed, IsSequence)

关键说明

  • 语言扩展:

    • DerivingStrategies:让我们可以明确指定使用newtype派生策略,避免和其他派生方式(比如stock或anyclass)冲突,确保编译器按照我们期望的方式处理实例派生。
    • GeneralizedNewtypeDeriving:核心扩展,它允许借助newtype的包装特性,自动复用底层类型(这里是[Int])已经实现的类型类实例,省去手动编写每个实例的繁琐工作。
  • 导入ClassyPrelude:这个库替代了标准Prelude,并且内置了你需要的所有目标类型类(MonoFunctor、IsSequence等),直接导入就能使用这些类的所有功能。

  • newtype派生:通过deriving newtype语法,让X自动继承[Int]的所有指定类型类实例,这样你就可以直接对X使用IsSequence等类提供的所有方法,比如序列操作、折叠、遍历等。

内容的提问来源于stack exchange,提问作者Samuel Pilz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:39:54