In the elm git book an architecture is described wherein child components generate messages which are disseminated via the main update function, eventually being handled by the appropriate update function in a child component. How does the translator pattern differ from this and what are the use cases of each pattern. Please provide a simple example.
What is the translator pattern in elm?
325 Views Asked by sjt003 At
1
There are 1 best solutions below
Related Questions in DESIGN-PATTERNS
- HTML5 behaving strange while working in jsFiddle
- Responsive Web Page Scrolling Glitch On iOS
- Semantic ui Form
- Semantic UI: How to define selected item of search dropdown ("<select>")?
- Semantic UI Accordion not working properly
- Semantic Background Image
- Hiding an input file inside a button Semantic-UI
- Semantic UI - Vertical centering a div
- ruby code not working under the "ui" class when using semantic-ui
- Meteor with Semantic UI dropdown behavior not working
Related Questions in FUNCTIONAL-PROGRAMMING
- HTML5 behaving strange while working in jsFiddle
- Responsive Web Page Scrolling Glitch On iOS
- Semantic ui Form
- Semantic UI: How to define selected item of search dropdown ("<select>")?
- Semantic UI Accordion not working properly
- Semantic Background Image
- Hiding an input file inside a button Semantic-UI
- Semantic UI - Vertical centering a div
- ruby code not working under the "ui" class when using semantic-ui
- Meteor with Semantic UI dropdown behavior not working
Related Questions in REACTIVE-PROGRAMMING
- HTML5 behaving strange while working in jsFiddle
- Responsive Web Page Scrolling Glitch On iOS
- Semantic ui Form
- Semantic UI: How to define selected item of search dropdown ("<select>")?
- Semantic UI Accordion not working properly
- Semantic Background Image
- Hiding an input file inside a button Semantic-UI
- Semantic UI - Vertical centering a div
- ruby code not working under the "ui" class when using semantic-ui
- Meteor with Semantic UI dropdown behavior not working
Related Questions in MESSAGE
- HTML5 behaving strange while working in jsFiddle
- Responsive Web Page Scrolling Glitch On iOS
- Semantic ui Form
- Semantic UI: How to define selected item of search dropdown ("<select>")?
- Semantic UI Accordion not working properly
- Semantic Background Image
- Hiding an input file inside a button Semantic-UI
- Semantic UI - Vertical centering a div
- ruby code not working under the "ui" class when using semantic-ui
- Meteor with Semantic UI dropdown behavior not working
Related Questions in ELM
- HTML5 behaving strange while working in jsFiddle
- Responsive Web Page Scrolling Glitch On iOS
- Semantic ui Form
- Semantic UI: How to define selected item of search dropdown ("<select>")?
- Semantic UI Accordion not working properly
- Semantic Background Image
- Hiding an input file inside a button Semantic-UI
- Semantic UI - Vertical centering a div
- ruby code not working under the "ui" class when using semantic-ui
- Meteor with Semantic UI dropdown behavior not working
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Whenever you have a nested "component" with an
update
function, you will need to make sure the parent passes through the child Msgs and Cmds. The git book outlines this with a simple example (where this code is in the parent, andWidget
is the child):The above will be necessary any time a child has an
update
function. However, the in the above example, the parent never knows or cares what child messages are being communicated to the child.But now, consider the case that a parent needs to know about a Msg generated by a child. For instance: a game where a nested child component needs to communicate with a parent that the game is lost.
The Translator Pattern is useful when a parent component needs to react to a message returned from the child update function. Here is the basic structure of the update function in the linked example:
Notice that it looks a lot like the earlier
update
example; the main difference is that rather than mapping theCmd
directly to a blind parentMsg
(blind in that the singleWidgetMsg
of the first example only passed around the childMsg
), thegameTranslator
mapping function allows you to map to one of the parent messages.It may be helpful to read the Translator Pattern Blog Post in its entirety. It was written for Elm 0.17 so there are a few syntax changes, but the general idea still holds.