Consensus seems to be:

(progress-state model old-state) -> new-state

and use currying to create a closure around the model.  Thanks!

On Mon, Sep 15, 2014 at 5:18 AM, Quzanti <[email protected]> wrote:

> Is there a limited number of models?
>
> The model should stay decoupled from the state as they are totally distinct
>
> so general-fn[model old-state] -> new-state
>
> then either you (if you know the model) or the user if they can choose any
> model should define a partial fn
>
> partial specific-model-fn general-fn[model]
>
> so that it is always clear which model is being used to idiot proof the
> situation, which was your worry
>
> the partial fn can then be used with all the clojure goodies such as
> iteration and reduction as jony hudsun has pointed out
>
> all I am adding to the debate is suggesting having a named partial fn
> named after the model you are using, for clarity
>
> On Sunday, September 14, 2014 3:28:10 AM UTC+1, RJ Nowling wrote:
>>
>> Hi all,
>>
>> I'm new to Clojure and implementing a Markov Model as part of a larger
>> project.  I'd like some advice on the API for a progress-state function.
>>
>> I see two possible options.  In the first option, we always ask the user
>> to provide and keep track of the MSM state themselves:
>>
>> (progress-state markov-model previous-state) -> new-state
>>
>> In the second approach, we create a record that combines a model and a
>> current state:
>>
>> (defrecord MarkovProcess [model current-state])
>>
>> (progress-state markov-process) -> updated-markov-process, new-state
>>
>> Which of these approaches is more idiomatic for Clojure?  Are multiple
>> return types an accepted practice in Clojure?  Is there a third, better way?
>>
>> Thanks in advance!
>>
>> RJ
>>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojure/t7th1wY-Vos/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
em [email protected]
c 954.496.2314

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to