gpt4 book ai didi

sml - 1个案例多种模式

转载 作者:行者123 更新时间:2023-11-30 16:48:44 25 4
gpt4 key购买 nike

在 SML 中,一个 case 语句中是否可以有多种模式?

例如,我有 4 个用字符串表示的算术运算符,"+"、"-"、"*"、"/",我想打印 "PLUS MINUS" 如果是"+"或"-",则为"MULT DIV" 如果是"*"或"/"

TL;DR:有什么地方可以简化以下内容以使用更少的情况吗?

case str of
"+" => print("PLUS MINUS")
| "-" => print("PLUS MINUS")
| "*" => print("MULT DIV")
| "/" => print("MULT DIV")

最佳答案

鉴于您已使用 标记您的问题tag,那么是的,SML/NJ支持这种模式。他们称之为or-patterns它看起来像这样:

case str of
("+" | "-") => print "PLUS MINUS"
| ("*" | "/") => print "MULT DIV"

注意括号。

MLton 的主分支也支持它,作为其 Successor ML effort 的一部分,但您必须自己编译 MLton。

val str = "+"

val _ =
case str of
"+" | "-" => print "PLUS MINUS"
| "*" | "/" => print "MULT DIV"

请注意,MLton 不需要括号。现在使用此命令编译它(与 SML/NJ 不同,您必须在 MLton 中显式启用此功能):

mlton -default-ann 'allowOrPats true' or-patterns.sml

关于sml - 1个案例多种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com