少し前に同様の質問をしたと思いますが、APIが不安定なため回答がありませんでした。だから私は0.13が通り過ぎるのを待っていました。同様の質問をするのが正しいかどうかわかりません...?
runChildrenWith(Text)
解釈さmapSplices
れ、コンパイルされたスプライスの世界に代わるものは何ですか? (この組み合わせが最も一般的なようです) 可能であれば、いくつかのコード例をいただければ幸いです。
私の理解が正しければ、すべてのアプリケーション スプライスをまとめて、heistInit
. 誰でもそれを行う方法を教えてもらえますか?
スプライス バインディング タグは、アプリケーション全体で一意である必要がありますか?
utilising
私が読んで学ぶことができるように、完成したスナッププロジェクトの新しい API とコンパイルされたスプライスはありますか?
ありがとうございました。
- アップデート -
以下の素晴らしい答え。しかし、残念ながら、一部のパーツ (レンズが付いているパーツ) はさらに混乱しました。私が正しく理解していれば、これは文字列を接合する簡単な方法です:
mySplice = "testSplice" ## testSplice
where testSplice = return $ C.yieldRuntimeText $ do
return "text to be spliced"
スプライスされた文字列を数回実行する必要がある場合、たとえば 5 つのテーブル raw で次のようにします。
mySplices = C.manyWithSplices C.runChildren mySplice
これは正しいです?
ヘイスト構成にスプライスを追加しようとすると、大量のエラーが発生します。
addConfig h $ mempty
{
hcCompiledSplices = "mySplice" ## mySplice -- or mySplices
}
どこが間違っていますか?遅くなってごめんなさい。
私が本当に必要とするのは(今のところ理解できるように)、データベースから受け取った単純な文字列をつなぎ合わせて表示することだけです。
-- 更新 2 --
非常に役立つダニエルの回答のおかげで、私は最終的に何かを機能させることができます。
これまでのところ、コードの両方のバリアントが機能しています。
ダニエルのおかげで最初のもの
stringSplice :: Monad n => C.Splice n
stringSplice = C.manyWithSplices C.runChildren splicefuncs (return ["aa","bb","cc"])
where
splicefuncs = "string" ## (C.pureSplice . C.textSplice $ id)
そしてセカンド
testSplice :: C.Splice (Handler App App)
testSplice = return $ C.yieldRuntimeText $ return "text to be spliced"
どこ
(C.pureSplice . C.textSplice $ id)
と同様の結果を生成します
return $ C.yieldRuntimeText $ return "text to be spliced"
上記に違いはありますか?どちらかを優先するケースはありますか?それらは同じ結果を生み出すようです。
ドキュメントによると、コンパイルされた splices lib には「deferMany」関数があり、解釈された lib の mapSplices と同様の結果を生成します。「C.manyWithSplices C.runChildren」の組み合わせの代わりに使用できますか??