feat(xanthous): Extend speech generation to arbitrary words
Wrap up the Phonotactics type into a Language type including both the phonotactics and a distribution of the number of syllables per word, so we can generate arbitrary words in addition to just arbitrary syllables Change-Id: I8a37ce9c0eec019c9b84d21b0f2b3b9f5fd319eb Reviewed-on: https://cl.tvl.fyi/c/depot/+/3203 Reviewed-by: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
This commit is contained in:
parent
2cfe4069bb
commit
efbb135cfc
2 changed files with 101 additions and 23 deletions
|
|
@ -1,5 +1,6 @@
|
|||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
{-# LANGUAGE StandaloneDeriving #-}
|
||||
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||
--------------------------------------------------------------------------------
|
||||
module Xanthous.Random
|
||||
|
|
@ -74,6 +75,10 @@ instance Choose (a, a) where
|
|||
newtype Weighted w t a = Weighted (t (w, a))
|
||||
deriving (Functor, Foldable) via (t `Compose` (,) w)
|
||||
|
||||
deriving newtype instance Eq (t (w, a)) => Eq (Weighted w t a)
|
||||
deriving newtype instance Show (t (w, a)) => Show (Weighted w t a)
|
||||
deriving newtype instance NFData (t (w, a)) => NFData (Weighted w t a)
|
||||
|
||||
instance Traversable t => Traversable (Weighted w t) where
|
||||
traverse f (Weighted twa) = Weighted <$> (traverse . traverse) f twa
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue