相关疑难解决方法(0)

F#:如何优雅地选择和区分受歧视的工会?

说我有一个形状列表:

type shape = 
| Circle of float
| Rectangle of float * float

let a = [ Circle 5.0; Rectangle (4.0, 6.0)]
Run Code Online (Sandbox Code Playgroud)

我怎样才能测试一个圆圈是否存在?我可以为每个形状创建一个函数

let isCircle s = 
    match s with
    | Circle -> true
    | _ -> false
List.exists isCircle a
Run Code Online (Sandbox Code Playgroud)

但我觉得必须有F#更优雅的方式,不必定义这样的功能对于每个形状类型等.在那儿?

相关问题是如何根据形状类型对形状列表进行分组:

a |> seq.groupBy( <shapetype? >)
Run Code Online (Sandbox Code Playgroud)

f#

16
推荐指数
3
解决办法
2128
查看次数

比较受歧视的联盟

我是F#的新手,我正在玩FParsec.我会使用FParsec生成AST.我想使用FsUnit围绕解析器的各个部分编写一些测试,以确保正确的操作.

我在语法上遇到了一些麻烦(对不起,确切的代码在起作用,我可以稍后发布一个具体的例子)那么如何比较两个有区别的联合(一个是预期的,另一个是实际的结果)?有人可以使用FsUnit(或NUnit)提供一个很小的代码示例吗?

一个受歧视的联合示例(非常简单)

type AST = 
    | Variable of string
    | Class of string
    | Number of int
Run Code Online (Sandbox Code Playgroud)

f# discriminated-union fsunit

5
推荐指数
1
解决办法
1588
查看次数

标签 统计

f# ×2

discriminated-union ×1

fsunit ×1