Say I have a single Heist template with two custom tags <x/> and <y/>. Each tag is bound to a Heist.Compiled.Splice. Now the template is rendered at each GET request for a specific route. How can I have <x/> be replaced by the first value of a pair, <y/> be replaced by the second value of the same pair, but the IO computation returning the pair be run only once per request (and be run only on that route, not on every route because some won't use the template at all)?
How to use a single per-request computation in multiple splices with Heist?
131 Views Asked by noteed At
1
There are 1 best solutions below
Related Questions in HASKELL
- Cabal sandbox is using a global dependency. Could not resolve
- Haskell lens: let binding of Traversal'
- How can I parse fixed-length, non-delimited integers with attoparsec?
- Pipeline-like operation using TChan
- compile-time vs. run-time cost of Hamlet templates
- Date-time package in haskell - error in the current one, can't find an analog
- How does one debug infinite recursion in Haskell?
- Force GHC using local files
- List with random numbers in Haskell
- Changes in other elements based on listbox selections in threepenny-gui
- Multithreading and gtk2hs
- Operator section for applicative with <$> and <*>
- Unable to create a custom header to use it in "withManager"
- How do I reuse an intermediate value in chain of Haskell Either binds?
- Haskell, Tree problems
Related Questions in HASKELL-SNAP-FRAMEWORK
- How to implement data streaming with the Snap framework?
- Is it possible to implement the CONNECT HTTP method with the Snap framework?
- ghc: unable to load package `snap-core-0.9.4.1'
- Haskell Snap: query_ trouble
- In Haskell, how can I abort a calculation when a web client disconnects
- Make resizing snap to certain widths of a Window
- Snap tutorial and advice
- Using the reader monad in snap (or, monad transformers in snap)
- Which of Yesod's Warp and snap-server should I choose for a high-performance application server?
- Test Snap Web Framework Handler
- Preferred method for referencing sub-Snaplets
- Snap auth username exist check
- Snap and Groundhog stopped working together
- Snap-Heist: why my template is not rendered?
- How to use Auth and PostgresqlSimple in one handler?
Related Questions in HEIST
- Snap-Heist: why my template is not rendered?
- Getting heist 0.14.0.1 to work
- Using values not from the application monad with Heist templates
- Haskell Snap Framework - Dynamic hyperlinks with Heist
- Digestive Functors with a variable number of subforms (Snap/Heist)
- How do I pass simple Haskell variables to a Heist template?
- Working with routes and html (Heist) in Snap
- Heist digestible form tags are not expanded
- Adding OnLoad hooks for Heist templates using the Snap Web Framework
- Snap: Database access with compiled splices
- Snap: compiled splice dependent on runtime decision and URL variable
- Snap: rendering table with compiled splices
- HTML doctype rendered with Snap / Heist template
- Does heist support substituting (strings / JSON) into an arbitrary location within a template?
- Is there an alternative to textSplice that does not escape the content?
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 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?
Your question is very similar to the Person example in the compiled splices tutorial. You need to create a parent splice which will perform the shared computation. Call it
computeXY. Your template would look like this:The
computeXYsplice would perform the computation and use the runChildrenWith pattern to make the results of that computation available to its children as<x/>and<y/>tags. However, the runChildrenWith pattern works a bit differently with compiled splices. Here's how it would be implemented using the new API functions that have been added since the tutorial was written: