标签: reflex

根据数字用户输入构建反射域小部件/事件的动态列表

我正在尝试创建一个动态小部件列表,其中小部件的数量由用户输入的数值确定。此外,每个小部件都会返回一个点击事件。这是我用来获取用户输入的内容:

settings :: MonadWidget t m => m (Dynamic t (Maybe Int))
Run Code Online (Sandbox Code Playgroud)

然后我用它来生成一个随机数生成器列表(这些是 的值的事实RandomGen并不重要。它们只是用于每个元素的内容,而不是元素的数量)。:

split' :: RandomGen g => Int -> g -> [g]
-- ...

gs <- mapDyn (maybe (split' 1 g) (flip split' g)) =<< settings
Run Code Online (Sandbox Code Playgroud)

现在我有gs :: (MonadWidget t m, RandomGen g) => Dynamic t [g]。其中g每个部件。这些小部件返回Event值,因此我需要将它们组合起来(即leftmost),然后在foldDyn某处使用该值。

go :: (MonadWidget t m, Random g) => g -> m (Event t MyType)
-- ...

clicked …
Run Code Online (Sandbox Code Playgroud)

monads haskell reflex

5
推荐指数
1
解决办法
463
查看次数

一个带有反射frp的svg元素

我正在尝试在reflex FRP中编写单个SVG元素

import Reflex.Dom
import qualified Data.Map as Map

main = mainWidget $ myDiv

myDiv = el "svg" $ do
  elAttr "circle"  $ Map.fromList [ ("cx" , "50") , ("cy", "50"), ("r" , "40"), ("stroke" , "green"), ("fill",  "yellow" )]
Run Code Online (Sandbox Code Playgroud)

这不编译.希望Data.Map是正确的.我从quickref知道类型签名是:

elAttr     :: String ->          Map String String  -> m a -> m a
Run Code Online (Sandbox Code Playgroud)

稍微好奇monad m与之相关mainWidget但主要是开始工作.

这是使用反射带来的沙箱编译的.

svg haskell reflex

4
推荐指数
1
解决办法
275
查看次数

安装reflex-dom可能会破坏ghcjs

我尝试安装reflexreflex-dom使用cabal install以下错误消息:

$ cabal install reflex-dom

...

cabal: The following packages are likely to be broken by the reinstalls:
lens-4.15.1
ghcjs-0.2.0
free-4.12.4
kan-extensions-5.0.1
adjunctions-4.3
Use --force-reinstalls if you want to install anyway.
Run Code Online (Sandbox Code Playgroud)

ghcjsGitHub 上的“ master”分支上的版本为0.2.0,而名为“ dedupe”的分支上的版本为0.2.1。而且我也怕被打破lens有没有什么办法来安装 reflex reflex-dom 在洽的方式? 也许我需要更改.cabal文件


这是终端的完整回复

$ cabal install reflex-dom

Resolving dependencies...
In order, the following would be installed:
bifunctors-5.3 (latest: 5.4.1) (via: reflex-dom-0.3 these-0.6.2.1 lens-4.13.2.1 free-4.12.4 semigroupoids-5.0.1 …
Run Code Online (Sandbox Code Playgroud)

haskell cabal ghcjs reflex ghcjs-dom

3
推荐指数
1
解决办法
242
查看次数

(如何)在"dependent-map"GADT中有多态值?

任何人都知道如何/可以Foo此代码中扩展GADT :

{-# language GADTs #-}
{-# language DeriveGeneric #-}
{-# language DeriveAnyClass #-}
{-# language TemplateHaskell #-}
{-# language StandaloneDeriving #-}

import Prelude                  (Int, String, print, ($))
import Data.GADT.Show           ()
import Data.GADT.Compare        ()
import Data.Dependent.Map       (DMap, fromList, (!))
import Data.Dependent.Sum       ((==>))
import Data.GADT.Compare.TH     (deriveGEq, deriveGCompare)
import Data.Functor.Identity    (Identity)

data Foo a where
  AnInt   :: Foo Int
  AString :: Foo String

deriveGEq      ''Foo
deriveGCompare ''Foo

dmap1 :: DMap Foo Identity
dmap1 = fromList [AnInt ==> 1, …
Run Code Online (Sandbox Code Playgroud)

haskell gadt reflex

3
推荐指数
1
解决办法
157
查看次数

如何定义一个无法推导出类型的Haskell类型类?

我正在使用Reflex.Dom库,它定义了一组用于创建HTML DOM元素的函数

  • el 创造一个元素
  • el' 创建并返回一个元素
  • elAttr 创建具有给定属性的元素
  • elAttr' 创建并返回具有给定属性的元素
  • 等等

我正在创建自己的小部件库,我不想为每个小部件定义所有这些变体.所以我编写了一个使用相同名称的类型类,但是根据彼此的方式定义了所有函数,只留下其中一个在每个实例中定义:

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}

module ElMaker where

import Data.Map (Map)
import qualified Data.Map as Map
import qualified Reflex.Dom as D

-- el: type of element to create
-- input: input parameter
-- output: return value
class (D.MonadWidget t m) => ElMaker t m el input output where
  el :: el -> input -> m output
  el e = …
Run Code Online (Sandbox Code Playgroud)

haskell reflex

2
推荐指数
1
解决办法
143
查看次数

如何在Reflex Dynamic中分支值?

在最简单的情况下,假设我有一个Dynamic t Bool,当值为true时,我想要一个空div存在,当值为false时,我不希望有任何dom元素.

稍微更一般,如果我有一个Dynamic t (Either MyA MyB),并且我的函数知道如何渲染给定a Dynamic t MyA或a Dynamic t MyB,如何调用相应的函数来渲染?

haskell reflex

2
推荐指数
1
解决办法
433
查看次数

标签 统计

haskell ×6

reflex ×6

cabal ×1

gadt ×1

ghcjs ×1

ghcjs-dom ×1

monads ×1

svg ×1