tricycle/system-actor-model/4.1.0

NOTE: the latest version is 9.0.0

Renamed to bellroy/system-actor-model. That is where the repository lives now. It has not been published as a package under the new name.

Versions published as tricycle/system-actor-model still install under that name. 26 versions of 26 come from the new location (see their notes).

Rerouted (renamed, verified). The GitHub user or repository was renamed. The tag is still there, at the new name. The Lamdera package server serves a copy recovered from https://github.com/bellroy/system-actor-model.

What we checked: The repo moved to github.com/bellroy/system-actor-model. Rebuilt with git archive from commit 03c4290838db of https://github.com/bellroy/system-actor-model (zip prefix tricycle-system-actor-model-5500a33/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 d14c07100cfdd5171fbfb5c0868ee849773ddf04.

The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.

Details · package.elm-lang.org's zip: https://github.com/tricycle/system-actor-model/zipball/4.1.0/

System.Message

System Messages

type alias SystemMessage address actorName appMsg =
Message address actorName appMsg

The type of the System Messages

Spawning and Populating

Spawn an Actor and add it to the System's view

spawn SomeActor populateView

Spawn an Actor, add it to the System's view, and assign it an Address

spawn
    SomeActor
    (\pid ->
        batch
            [ populateView pid
            , populateAddress pid
            ]
    )
actorName
-> (PID -> Message address actorName appMsg)
-> Message address actorName appMsg

Spawn an Actor

Value
-> actorName
-> (PID -> Message address actorName appMsg)
-> Message address actorName appMsg

Spawn an Actor with given flags (as an encoded JSON Value)

populateView : PID -> Message address actorName appMsg

Add a PID to the System's view

The System will render views in the order it receives it.

populateAddress : address -> PID -> Message address actorName appMsg

Add a PID to a given address

You can send messages to Addresses just like you can send messages to a PID.

Removing and Destroying

kill : PID -> Message address actorName appMsg

Kill a process

This will trigger the Actors onKill event on which you can decide what to do with this Message.

There is a Default behaviour available that will remove the Process from the System.

removeFromView : PID -> Message address actorName appMsg

Remove a PID from the System view

removeFromAddress : address -> PID -> Message address actorName appMsg

Remove a PID from a given address

Actor Communication

sendToPid : PID -> appMsg -> Message address actorName appMsg

Send a message to a PID.

sendToAddress : address -> appMsg -> Message address actorName appMsg

Send a message to an address.

sendToPidOnAddress : PID -> address -> appMsg -> Message address actorName appMsg

Send a message to a PID only when it's on the given address.

Utility

List (Message address actorName appMsg)
-> Message address actorName appMsg

Batch perform a list of messages

noOperation : Message address actorName appMsg

Don't do anythinge

This can be handy for instance when you want to spawn an Actor but don't do anything with it's resulting PID.

spaw MyActorWorker (always noOperation)
toCmd : msg -> Cmd msg

Converts a msg in to Cmd.

Application

updateDocumentTitle : String -> Message address actorName appMsg

Update the document title

Log

log :
LogMessage address actorName appMsg
-> Message address actorName appMsg

Log a LogMessage

This will trigger the onLogMessage function you provided while initializing your application.

LogMessage address actorName appMsg
-> Message address actorName appMsg

convenience function that ignores all logs