discriminated-union

    2热度

    2回答

    考虑下面的代码的理解推理... type TypeOne() = member val Name = "" with get, set type TypeTwo() = member val Name = "" with get, set member val Property = 0 with get, set [<RequireQualifiedAcces

    5热度

    1回答

    首先,对于糟糕的标题表示歉意 - 我不明白足够的F#来更好地描述问题。 考虑一个简单的DU: type Money = | USD of decimal | GBP of decimal | EUR of decimal static member (+) (first: Money, second: Money) = match first,

    0热度

    2回答

    我'卡住,并没有发现任何教程或如何产生多维数组像这样的例子,而使用foreach(): '0' => '-- ALL --', 'CATEGORY 1' => array( '11' => 'Item 11', '12' => 'Item 12', '13' => 'Item 13', ), 'CATEGORY 2' => array( '14' => '

    3热度

    4回答

    我要实现原语 type point = double * double type shape = | Point of point | Line of point * point | Vector of point | Circle of point * double with member this.ToString = functi

    1热度

    1回答

    我想限制工会类型A和B类型的参数,其中B是一些通用类型,它将是子类型。我想提出的对象在这个方法: def accept[A](a:A)(implicit ev:FooOrBaish[A]){ /* do something */} 这是,我怎么指定implicits: case class Foo(i:Int) trait Baish case object Bar extends Bai

    1热度

    1回答

    众所周知,类继承是“开放”类型 - 分区和歧视联盟是“封闭”类型 - 分区。但是,虽然添加新的子类很容易,但添加新的虚拟函数需要修改所有现有的类。同时,受歧视的工会可以轻松添加新的功能。 | inheritance | discriminated union new type | easy | hard new function | hard | easy OOP已经有足够的,

    4热度

    3回答

    假设我有以下DU: type Something = | A of int | B of string * int 现在我用它的功能是这样的: let UseSomething = function | A(i) -> DoSomethingWithA i | B(s, i) -> DoSomethingWithB s i 这样的作品,但我不得不解构DU为了将它传递给DoSomet

    4热度

    2回答

    我想要一个报告列表。报告可以是详细信息或部门类型。 module Data type Section = { Header: string; Lines: string list; Total: string } type Detail = { State: string; Divisions: string list; S

    22热度

    4回答

    我想在深入研究复杂示例之前弄清楚F#的基本知识。我正在学习的材料引入了歧视联盟和记录类型。我已经审查了两者的材料,但我仍然不清楚为什么我们会使用这两种材料。 我创造的大多数玩具例子似乎都可以在两者中实现。记录似乎是非常接近我所认为的在C#中的对象,但我想避免依赖映射到C#的方式来了解F# 所以...... 是有明确的理由使用一个在另一个? 是否存在某些适用的规范情况? 是否有某些功能可用于其中一个

    4热度

    2回答

    是的,一个简单的问题,但我找不到它的专家意见。 我使用的计算表达式序列服务器端进程。当我的函数具有相同的签名时,它非常有帮助,所以我有一个具有不同组合的歧视联盟。我有几个快速,初学者的问题。 是否有建议的DU选项数量的上限?目前我的DU有九个选项,但随着项目的进展,这个数字会增加。如果我在项目结束时达到30或40,该怎么办? 也许会有一个问题,如果一些方案得到“长”?目前,平均选项大约有四种或五种