gpt4 book ai didi

haskell - haskell中UUID的确定性生成

转载 作者:行者123 更新时间:2023-12-02 14:47:16 27 4
gpt4 key购买 nike

我正在寻找一种确定性的方法来从数据类型中获取 UUID,就像我总是获得相同的 UUID...

我的项目 -> UUID

最佳答案

只需使用至少 128 位的哈希对数据进行哈希处理,然后使用 Data.Binary.decode::ByteString -> UUID。例如:

#!/usr/bin/env cabal
{- cabal:
build-depends: base, binary, uuid-types, cryptohash-sha256, bytestring
-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
import Data.Binary (decode,encode,Binary)
import Crypto.Hash.SHA256 (hashlazy)
import Data.UUID.Types
import GHC.Generics
import Data.ByteString.Lazy (fromStrict)

data Foo = Foo Int String
deriving (Eq,Ord,Show,Generic,Binary)

main :: IO ()
main = print (decode @UUID (fromStrict (hashlazy (encode (Foo 1 "hello")))))

和:

chmod +x so.hs ; ./so.hs
...
f32f6f68-2131-8c5e-babd-f7e1dc190163

关于haskell - haskell中UUID的确定性生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58285094/

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