单一案例歧视工会的目的

2023-12-21

我正在定义一个单子可观察/反应式解析器。这与普通解析器的行为完全不同,因为它是连续查询。底层类型是:

IObservable<'a> -> IObservable<'b>

从函数式语言中的各种解析器实现来看,似乎定义事物的更合适的方法是单例区分联合:

type Pattern<'a,'b> = Pattern of (IObservable<'a> -> IObservable<'b>)

这意味着我需要提取底层函数才能使用它:

let find (Pattern p) = p

问题是:这只是按照惯例,还是为了以后扩展的目的,或者即使定义从未改变,是否有理由这样做?

额外问题:如果只是为了更方便的类型签名,为什么不直接使用类型别名:

type Pattern<'a,'b> = IObservable<'a> -> IObservable<'b>

我已经在这方面取得了很大进展,并且还没有发现不使用 DU 会影响可组合性的情况。


F# 编译器不保留有关类型缩写的信息,因此您无法从中受益类型推断根本不。类型签名可以理解为程序规范;让类型检查器完成其工作是确保程序正确性的好方法。

在类型别名的情况下,您需要在任何地方显式指定类型注释:

type Vector = float * float

// val add : float * float -> float * float -> Vector
let add ((x1, y1): Vector) ((x2, y2): Vector): Vector = (x1 + y1, x2 + y2)

但它并没有为您提供使用 DU 时的透明度:

type Vector = V of float * float

// val add : Vector -> Vector -> Vector
let add (V(x1, y1)) (V(x2, y2)) = V(x1 + y1, x2 + y2)

在复杂的程序中,清晰的类型签名确实可以更轻松地维护可组合性。

不仅可以更简单地向单例 DU 添加更多案例,而且可以更轻松地使用成员和静态方法扩展 DU。一个例子是你经常覆盖ToString()为了漂亮的打印。

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

单一案例歧视工会的目的 的相关文章

  • ProjectCracker 与 .netstandard 2.0 项目

    我的团队最近从使用 net 框架转向使用 net 标准 2 0 作为我们的 F 库 我们有一些在项目上运行的内部脚本来自动生成 Markdown 文档 这些脚本使用 F 编译器服务 SDK 来分析代码并检索类型元数据 文档注释等 我们正在使
  • F# 中类型约束的顺序

    这适用于 F 4 0 type Something lt a b when b gt seq lt b gt gt 这不会 type Something lt b when b gt seq lt b gt a gt 类型名称中出现意外的符
  • 管道序列中的异常处理

    我正在开发一个基本的 2D CAD 引擎 管道操作符显着改进了我的代码 基本上 有几个函数从空间中的点 x y 开始 并在多次移动操作后计算最终位置 let finalPosition startingPosition gt moveByL
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • 该表达式的类型为 int,但此处与 unit 类型一起使用

    我试图在 F 中获得与此 vb net 代码完全相同的 非功能性的 Function FastPow ByVal num As Double ByVal exp As Integer As Double Dim res As Double
  • Haskell 中的 print 是纯函数吗?

    Is print在 Haskell 中是纯函数 为什么或者为什么不 我认为不是 因为它并不总是返回与纯函数应返回的值相同的值 类型的值IO Int并不是真正的Int 它更像是一张纸 上面写着 嘿 Haskell 运行时 请生成一个Int如此
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 在 Deedle 系列中算得上独一无二

    我想对我的数据框中的系列有一个概述 例如 pandas 的唯一值计数 我不知道是否有内置函数可以实现这一点 到目前为止 我已经完成了一个函数来获取不同特征的数量 我可以设法完成这项工作 我的问题只是关于内置功能 let unique s D
  • F# 中的数组初始化

    如何根据给定的记录类型在 F 中创建和初始化数组 假设我想创建一个包含 100 个 record1 记录的数组 e g type record1 value1 string value2 string let myArray Array i
  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 如何使 FSI 在 NET5 下工作并让愚蠢的 stackoverflow 消息“标题不能包含...”闭嘴?

    我正在将一个相当小的 F 项目从 Net Framework 迁移到 NET5 迁移非常简单 一切正常 包括测试 但是 当我运行一些脚本时 我现在收到以下错误 Microsoft R F Interactive version 11 0 0
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示
  • 使用 Reader Monad 进行依赖注入

    我最近看到了谈话极其简单的依赖注入 http www youtube com watch v ZasXwtTRkio and 无需体操的依赖注入 http vimeo com 44502327关于 Monads 的 DI 并留下了深刻的印象
  • 当 Generic.List.Add 是函数中的最后一个语句并且开启尾调用优化时,性能会受到影响

    我遇到了一个奇怪的性能损失 我将其归结为以下代码
  • F# 中的自定义路由事件

    我正在尝试翻译这段 C 代码 https msdn microsoft com en us library ms752288 aspx 到目前为止我的尝试 type MyButtonSimple as self inherit Button
  • 您可以使用 .net core 运行 F# 脚本文件 (.fsx) 吗?

    是否可以使用 net core 运行 fsx 文件 相当于fsharpi在单声道上 它在 NETCore v3 0 或更高版本中开箱即用 cat hello fsx usr bin env fsharpi printfn hello wor
  • 从函数返回随机值是副作用吗?

    我当时正在编写一些 F 代码 并且正在编写一个从一组字符串中返回随机字符串的函数 假设我有这样的事情 open System let a a b c d let rstring arr string let r new Random arr
  • 在构建过程中引用自身内部的记录

    我正在尝试创建一条记录 该记录在同一构造函数中使用先前定义的字段之一来计算另一个字段的值 例如 myRecordType Foo int Bar int myRecord Foo 5 Bar Array init Foo fun i gt

随机推荐

  • MVC 5 属性路由包罗万象

    如何使用 MVC 中的新属性路由创建捕获所有路由 我试过这个 Route pagenode Order 999 但是当我有一条命名路线时 Route contact 我得到了 Multiple controller types were f
  • 使用AVPlayer播放加密视频

    我正在实现一个包含视频播放器的应用程序 由于某些原因 视频文件使用 AES 加密 并且这些文件的大小可能相当大 以避免将其作为一个整体加载到 RAM 中 我正在寻找一些用 AVPlayer 来播放它的方法 Tried 1 按照此处建议的自定
  • 可以编译Scala程序但无法运行它们

    我可以在终端中使用 scalac 编译 scala 程序 但收到警告 Charless Macintosh src Charles scalac hello scala Charless Macintosh src Charles scal
  • 以正确的尺寸打印 HTML5 Canvas

    是否有正确的方法来指定画布元素的尺寸 例如以毫米为单位 以便如果我将其打印出来它将具有正确的尺寸 我试过这个简单的例子
  • 输出子句 VS 触发器

    在我们的数据库中 大多数表都有一个dbupddate字段表示datetime最后的INSERT or UPDATE应用在该行 为了避免该字段有错误的值 存在触发器 有时AFTER 有时INSTEAD OF 这确保最终该值是正确的 而不是有人
  • EF 4.1 Code First 中的 XML 数据类型

    我想使用 SQL Serverxmltype 作为实体类的列类型 根据这个线程 https social msdn microsoft com Forums en US 2d6b75ee a1b7 44bf b5f3 d32b12f2db6
  • 无法连接到 Elasticsearch(通过 Curl)

    我最近安装了 Elasticsearch 前几天一切都运行良好 但不知何故今天它停止工作了 当我启动服务时 它声称没问题 sudo etc init d elasticsearch start Starting Elasticsearch
  • 如何强制mysql UPDATE查询使用索引?如何让mysql引擎自动使用索引而不是强制使用索引?

    下面是不使用最近创建的复合索引的更新查询 查询计划 解释表明它没有使用名为的复合索引radacctupdate我认为这将使更新查询更快 表上还有其他索引可供其他查询使用 EXPLAIN UPDATE radacct SET acctstop
  • 如何在Scheme中列出评估的所有中间步骤

    例如 如果有表达式 map lambda x add1 x 1 2 3 其评估结果为 2 3 4 如何显示所有中间步骤 在本例中为 map lambda x add1 x 2 2 3 map lambda x add1 x 2 3 3 我认
  • 每次调试运行时禁用辅助服务

    每次启动新的调试实例时 我的辅助功能服务都会重置为禁用状态 有什么方法可以在连续的调试运行中保持启用它 因为每次启用它以调试服务是相当漫长且无聊的 我在真实设备和模拟器上有相同的行为 服务中没有异常 我尝试了事件处理程序中没有代码的事件 我
  • 在编译库中查找 System.gc()

    我在 gc 日志中看到显式的 gc 调用 见下文 我可以使用 XX DisableExplicitGC 删除调用 但我真的想知道哪个代码 库正在调用System gc 关于如何追踪它有任何提示吗 2011 05 30T12 21 48 23
  • 有哪些好的 java make 实用程序?

    我正在寻找一个用于构建大型 java 程序的 make 实用程序 我已经知道 ANT 但想看看还有什么可用的 理想情况下 它应该能够处理导致 GNU Make 混乱的 java gt class 包目录怪异现象 Win32 但跨平台是一个优
  • Rails:对渲染视图进行后处理

    某些 Rails 应用程序会生成一个视图 其中显示有关资源的一些信息 我想通过插件抑制一些信息 而不改变或覆盖视图 一种可能的方法是重写插件中的视图 但这可能会干扰其他插件 我不希望这样 有没有办法修改控制器 以便生成的视图在发送到客户端之
  • 如何检测flutter应用程序何时从后台返回?

    我想检测扑动应用程序何时从后台返回 在其他跨App开发的SDK中 当应用程序更改此状态时 通常会有一个监听器 flutter中有类似的东西吗 class AppState extends State
  • HTTP 标头中的 unicode 用户代理合法吗?

    我正在维护的一个应用程序将从 Web 日志中提取的用户代理加载到使用 latin1 字符集的 MySQL 表列中 有时 它无法加载如下所示的用户代理 Mozilla 5 0 I CPU iPhone OS 5 0 1 like Mac OS
  • UIImageView.appearance 覆盖 UISegmentedControl.appearance

    我一直在尝试使用外观代理 API 将一些默认颜色应用于某些控件 但遇到了问题 当我应用色调颜色时UISegmentedControl使用类似 UISegmentedControl appearance tintColor UIColor r
  • Qt:如何获取当前正在运行的窗口?

    我正在编写一个模拟按键的测试应用程序 我想了解每次按键后显示的窗口 这是代码块 std auto ptr
  • Colorbar - Matlab 中的轴刻度

    我正在使用下面的代码 d3 vals n datesmonth figure plot n d3 colormap jet 12 hold on plot n d3 b scatter n d3 RiskierInd filled caxi
  • React Native iOS 有效登录后“Safari 无法打开页面,因为地址无效”

    登录成功后得到如下信息 登录流程在 Android 上按预期工作 并正确返回令牌 刷新等 Safari 无法打开页面 因为地址无效 错误屏幕录制 https i stack imgur com N5esc gif Auth0 Callbac
  • 单一案例歧视工会的目的

    我正在定义一个单子可观察 反应式解析器 这与普通解析器的行为完全不同 因为它是连续查询 底层类型是 IObservable lt a gt gt IObservable lt b gt 从函数式语言中的各种解析器实现来看 似乎定义事物的更合