module Main exposing (main) import Browser import Random import Html exposing (Html, button, div, p, text) import Html.Events exposing (onClick) import GenderFriends exposing (altBlumBlumShub, getPolygenderWithLength, renderPolygender) constant a b = a main = Browser.element { init = init , update = update , subscriptions = constant Sub.none , view = view } type Model = AwaitingSeed | Ready Int {- seed -} Int {- regeneration count -} type Msg = SetSeed Int | Regenerate init : () -> (Model, Cmd Msg) init _ = (AwaitingSeed, Random.generate SetSeed (Random.int 2147483648 4294967296)) update : Msg -> Model -> (Model, Cmd Msg) update msg model = let newModel = case msg of SetSeed seed -> Ready seed 0 Regenerate -> case model of AwaitingSeed -> AwaitingSeed Ready oldSeed regenCount -> Ready (altBlumBlumShub oldSeed) (regenCount + 1) in (newModel, Cmd.none) viewStr : Model -> String viewStr model = case model of AwaitingSeed -> "...loading..." Ready seed regenCount -> let (gender, newSeed) = getPolygenderWithLength regenCount seed genderStr = renderPolygender gender in "do u think a wuppie and a kitties could be " ++ genderStr ++ ",,?" view : Model -> Html Msg view model = div [] [ p [] [ text (viewStr model) ] , button ( case model of AwaitingSeed -> [] Ready _ _ -> [onClick Regenerate] ) [ text "make it gayer" ] ]