ocaml - 输入两个列表,内容相互匹配
问题描述
我正在尝试使用此方法签名在 OCaml 中创建一个函数:
let generate_deck (suits : suit list) (ranks : rank list) : card list =
Suit、Rank 和 Card 定义如下:
type suit = Clubs | Spades | Hearts | Diamonds
type rank = Six | Seven | Eight | Nine | Ten |
Jack | Queen | King | Ace
type card = rank * suit
然后该函数应返回一个列表,其中每个套装与所有可能的等级配对。我知道我需要使用模式匹配来做到这一点,但我真的很困惑如何做到这一点。
解决方案
首先,编写一个函数rank list -> suit -> card list
来生成一个完整的花色,然后map
在所有花色上生成一个concat
.
type suit = Clubs | Spades | Hearts | Diamonds
type rank = Six | Seven | Eight | Nine | Ten |
Jack | Queen | King | Ace
type card = rank * suit
let generate_suit ranks suit =
List.map (fun rank -> suit, rank) ranks;;
let generate_deck suits ranks =
List.concat (List.map (generate_suit ranks) suits);;
推荐阅读
- java - KTable 数据 - 字节打印
- rxjs - rxjs 收集 Subject 发送的值,然后将过去的值作为数组发送
- wordpress - 对于我网站的每个 WordPress 页面,为什么我有两个 URL?
- python - Tornado 替换服务器上的自定义记录器(不在本地计算机上)
- java - 使用 java junit5 maven spring-boot 从提供者端验证 PACT 时遇到问题
- c++ - 构建一个独立的 C++ exe。使用 msbuild 静态链接
- excel - 得到“外部表不是预期的格式。” 读取 Excel 文件时
- python - resources.py 中的 PDF 文件
- flutter - Flutter setState 3 个位置参数,但发现 1 个错误
- node.js - 更新终端输出 Node.js