在 Elm 中声明模块之外访问联合类型

2023-12-27

Given

--module 1
module Module1 exposing (Message) where

type Message
  = Test String
  | Error Int


--module 2
module Module2 exposing (sayTest, sayError) where

import Module1 exposing (Message)

sayTest : String -> Message
sayTest msg =
  Test msg  --error

sayError : Int -> Message
sayError code =
  Error code --error


processMessage : Message -> String
processMessage msg ->
  case msg of
    Test s -> s
    Error i -> toString i

我如何访问Test and Error来自模块 2?

目前,我必须在模块 1 中创建函数,调用该函数时将创建所需的实例,但随着列表越来越长,这变得不切实际。


您可以公开导出类型的所有类型构造函数,如下所示:

module Module1 (Message (..)) where

或者,如果您只想导出几个类型构造函数,您可以单独调用它们:

module Module1 (Message (Test, Error)) where

type Message
  = Test String
  | Error Int
  | Foo String
  | Bar

在上面的代码中,Foo 和 Bar 构造函数对模块保持私有。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Elm 中声明模块之外访问联合类型 的相关文章

  • 极限学习机(Extreme Learning Machine,ELM)详解

    ELM ELM的提出目的是为了解决人工神经网络训练时耗费的时间和高成本 对此 xff0c 2004年由南洋理工大学的黄广斌提出了ELM学习理论 机器或者生物学习可以不需要调整隐层节点 xff1a 给定任何连续目标函数或者可分类目标 xff0
  • 高仿“饿了么”Vue项目(一)

    高仿 饿了么 Vue项目 一 当我们把Vue框架的概念过了一遍之后 要进一步提升 就要看看别人是怎么使用Vue框架来做项目了 在github上有不少好的Vue项目 我找到了其中的一个 并把它作为下一步学习的目标 链接地址 https git
  • 黄广斌谈ELM进展:为深度学习提供理论支持, 将勾连生物学习

    强大的深度神经网络 仍有很多待解决的问题 超限学习机 ELM 发明人 新加坡南阳理工大学副教授黄广斌认为 ELM能够有效地拓展神经网络的理论和算法 近日 黄广斌发表文章 超限学习机 筑梦普适学习和普适智能 Extreme learning
  • 将 Http 请求与其余更新集成

    我正在使用以下模型制作一个简单的 Elm 应用程序 type alias Model num Float str String list List Float serverResponse String 我正在遵循 Todo MVC 示例
  • 在 Elm 中声明模块之外访问联合类型

    Given module 1 module Module1 exposing Message where type Message Test String Error Int module 2 module Module2 exposing
  • 使用本地包

    我在本地目录中有一个 Elm 包 源代码 所有构建工件 我想从另一个 Elm 包中使用它 而不发布库 所以我的目录设置如下所示 my lib elm package json my app elm package json 首先 跑步elm
  • Elm 与 ClojureScript 相比如何?

    我已经到了这样的地步 使用 Backbone js 面向对象的 MVC 模式进行 GUI 编码变得非常复杂 并且正在考虑其他范例 MDV https github com Polymer TemplateBinding FRP http e
  • elm 中的类型继承

    我想要实现的是类型继承 我的意思是 我希望能够让函数返回 子类型 然后让函数返回 超类型 让我举一个例子 假设我有一个主视图组件 它返回一个 Html Msg view Model gt Html Msg view model div cl
  • 用于带有数据的 Union 类型的 Elm JSON 解码器

    我的 json 看起来像这样 name providerWithVal value example 或者像这样 name provider2 or name provider3 我的 Elm 联合类型定义如下 type Provider P
  • 如何在 Elm 中打印所选选项的索引?

    我有一个
  • 如何在 elm 中按索引获取列表项?

    我有一个清单 现在我想要第 n 项 在哈斯克尔我会使用 但我找不到它的榆树变体 Elm 添加了数组0 12 1 http elm lang org blog announce 0 12 1 elm 并且在 0 19 中对实现进行了大规模修改
  • 如何将 onClick 事件处理程序添加到 Elm 中的画布形状?

    是否可以添加 onClick 事件处理程序Graphics Collage square 我想知道点击的相对位置 在 Javascript 中 我可以做类似的事情this http jsbin com zikaxoguvu 1 edit h
  • 通过端口调用window.open

    我正在实施社交身份验证 当用户单击按钮时 我发送一条命令 以便我可以调用window open Looking at this call stack we can see that the port handler is called in
  • Elm - 生成随时间变化的随机数列表

    我试图使一列随机数每秒发生变化 但我收到不同的错误消息 import Random main flow down asText Random range 0 100 every second asText Random range 0 10
  • 如何在 Elm 中换行 html 文本

    我有这样的文字 Special menu nFrenchfire 1ea nHamborger 2ea nMeatball 1ea 我想用 Html 标签在 Elm 中对其进行断线 例如pre or span它应该像这样显示 Special
  • elm:读取文件内容

    有没有办法读取文件elm 我想要一个xml设置文件 我将在其中保留不同的设置并用 elm 读取它 我已经看过这个parser https github com toburger elm xml parser 但它期望xml内容 而不是路径
  • Elm 中的序列 Http.get

    下面我有一个button尝试加载远程内容 import Post exposing Post import Html exposing import Html Events exposing import Http import Json
  • 了解 Elm 中的通用联合类型

    我无法理解到底是什么Html msg类型是什么 或者它如何使用 我在 VirtualDom elm 中找到了这行代码 其中Html msg似乎是以下别名 type Node msg Node 这看起来像一个带有一个类型参数的通用联合类型 m
  • 更新 Elm 中的记录

    注意 这是我第一次看到 Elm 上周我偶然了解到它的存在 当您更新记录时 您是真正更新记录还是只是创建新记录 gt bill name Nye age 57 name Nye gt bill age 22 age 22 name Gates
  • Elm:如何从 JSON API 解码数据

    我有这个数据使用http jsonapi org http jsonapi org format data type prospect id 1 attributes provider user id 1 provider facebook

随机推荐