我有两个功能A和B,可以同时禁用,启用A,启用B,但不能同时启用.看完" 让不可能的国家变得不可能"后,我想尝试在类型级别上强制执行此操作.
我正在考虑的解决方案的简化版本如下.
module Main exposing (main)
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
type Model
= NoneEnabled
| AEnabled
| BEnabled
init : Model
init = NoneEnabled
type Msg
= EnableA
| DisableA
| EnableB
| DisableB
view : Model -> Html Msg
view model =
let -- Buttons to enable and disable features
buttons =
div [] [ button [onClick EnableA] [text "Enable A"]
, button [onClick DisableA] [text "Disable A"] …Run Code Online (Sandbox Code Playgroud)