gpt4 book ai didi

idris - 将 Nat 保持在固定范围内

转载 作者:行者123 更新时间:2023-12-04 20:39:35 25 4
gpt4 key购买 nike

我想要一个 Nat保持在一个固定的范围内。我想要函数 incrdecr如果他们要将数字推到范围之外,则失败。这似乎是 Fin 的一个很好的用例。 ,但我不确定如何使它工作。类型签名可能如下所示:

- Returns the next value in the ordered finite set.
- Returns Nothing if the input element is the last element in the set.
incr : Fin n -> Maybe (Fin n)

- Returns the previous value in the ordered finite set.
- Returns Nothing if the input element is the first element in the set.
decr : Fin n -> Maybe (Fin n)
Nat将用于索引 Vect n .我该如何实现 incrdecr ?是 Fin甚至是正确的选择?

最佳答案

我想最简单的方法是使用来自 Data.Fin 的一些标准 Fin↔Nat 转换函数。 :

incr, decr : {n : Nat} -> Fin n -> Maybe (Fin n)
incr {n=n} f = natToFin (succ $ finToNat f) n

decr {n=n} f = case finToNat f of
Z => Nothing
S k => natToFin k n

关于idris - 将 Nat 保持在固定范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052067/

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