小编Ben*_*ord的帖子

我使用反应性香蕉吗?

这是一个使用反应香蕉库的Haskell FRP程序示例.我只是刚刚开始尝试使用Haskell,特别是对于FRP的含义并不是很清楚.我真的很感激对下面代码的批评

{-# LANGUAGE DeriveDataTypeable #-}
module Main where

{-
Example FRP/zeromq app.

The idea is that messages come into a zeromq socket in the form "id state". The state is of each id is tracked until it's complete.
-}

import Control.Monad
import Data.ByteString.Char8 as C (unpack)
import Data.Map as M
import Data.Maybe
import Reactive.Banana
import System.Environment (getArgs)
import System.ZMQ

data Msg = Msg {mid :: String, state :: String}
    deriving (Show, Typeable)

type IdMap = Map String String

-- …
Run Code Online (Sandbox Code Playgroud)

haskell zeromq frp reactive-programming reactive-banana

17
推荐指数
1
解决办法
2220
查看次数

Haskell的镜头包如何处理也是关键字的字段?

镜头如何处理脱糖字段是关键字的情况?我似乎记得读过一些特别的东西,但是我不记得我在哪里阅读它或者"镜头"访问者的名字最终会是什么.

考虑以下:

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

import           Control.Lens
import           Control.Monad.IO.Class (liftIO)
import           Data.Maybe
import           Data.Aeson
import           Data.Aeson.TH
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy    as L
import qualified Data.ByteString.Lazy.Char8 as LC8
import qualified Data.Text.Lazy.Encoding as TLE


data Typ = Typ {
    _fld1 :: BS.ByteString
  , _type :: Int
} deriving (Show)

$(deriveJSON tail ''Typ)
$(makeLenses ''Typ)


main = do
  print $ typ^.fld1
  print $ typ^.getType
  where
    jsonTyp = "{\"fld1\": \"Test\", \"type\": 1 }"
    typ'    = …
Run Code Online (Sandbox Code Playgroud)

haskell lenses

9
推荐指数
2
解决办法
425
查看次数

自动过滤SQLAlchemy查询的正确方法?

我刚从sqlalchemy的CRM应用程序中反思了一个非常讨厌的架构.所有表都有一个已删除的列,我想自动过滤所有标记为已删除的实体和关系.这是我想出的:


class CustomizableQuery(Query):
    """An overridden sqlalchemy.orm.query.Query to filter entities

    Filters itself by BinaryExpressions
    found in :attr:`CONDITIONS`
    """

    CONDITIONS = []

    def __init__(self, mapper, session=None):
        super(CustomizableQuery, self).__init__(mapper, session)
        for cond in self.CONDITIONS:
            self._add_criterion(cond)

    def _add_criterion(self, criterion):
        criterion = self._adapt_clause(criterion, False, True)
        if self._criterion is not None:
            self._criterion = self._criterion & criterion
        else:
            self._criterion = criterion
Run Code Online (Sandbox Code Playgroud)

它的使用方式如下:

class UndeletedContactQuery(CustomizableQuery):
    CONDITIONS = [contacts.c.deleted != True]

    def by_email(self, email_address):
        return EmailInfo.query.by_module_and_address('Contacts', email_address).contact

    def by_username(self, uname):
        return self.filter_by(twod_username_c=uname).one()

class Contact(object):
    query = session.query_property(UndeletedContactQuery)

Contact.query.by_email('someone@some.com')
Run Code Online (Sandbox Code Playgroud)

EmailInfo是映射到电子邮件与其相关的其他模块之间的连接表的类. …

python sqlalchemy sugarcrm

8
推荐指数
1
解决办法
3403
查看次数

如何使这个折叠更通用

我写过这个函数:

{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell       #-}
{-# LANGUAGE TypeFamilies          #-}
module Hierarchy where

import           Control.Applicative
import qualified Control.Foldl       as CF
import           Control.Foldl (Fold(..))
import           Control.Lens hiding (Fold)
import qualified Data.Foldable       as F
import qualified Data.Map.Lazy       as M
import           Data.Monoid         (Monoid (..), Sum (Sum))
import           Data.Profunctor
import           Data.Set (Set)
import           Data.Maybe
import           Data.Text           (Text)

overMaps :: (Ord k) => Fold a b -> Fold (M.Map k a) (M.Map k b)
overMaps (Fold step begin …
Run Code Online (Sandbox Code Playgroud)

haskell fold

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

如何提升返回单例字符串的函数?

使用带有lts-9.2(和singletons-2.1)的堆栈,我有以下几点:

   $(singletons [d|
       data EventScans
        = PassThrough
        | SuiteProgress

       -- cn :: EventScans -> [Char]
       cn PassThrough = "all-events"
       cn SuiteProgress = "suite-progress"
    |])
Run Code Online (Sandbox Code Playgroud)

我无法为该函数提供类型签名,而推断出的类型签名为cn :: IsString t => EventScans -> t。AFAIK IsString不会单调。

没有类型签名,cn我得到了Cn预期的类型族。如果我尝试添加类型签名,则会得到:

* Expected kind `[Char]', but `"all-events"' has kind `Symbol'
* In the type `"all-events"'
  In the type family declaration for `Cn' (haskell-stack-ghc)
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?

编辑如果尝试包含类型签名cn :: IsString t => EventScans -> t,则会出现以下错误:

Variable `a_agPb' used as both …
Run Code Online (Sandbox Code Playgroud)

haskell singleton-type

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

覆盖sqlalchemy反射表中的默认值

我在一个现有的mysql数据库中反映了一大堆表.我想表示任何表中某个名称的任何列都默认为datetime.now().然而,天真地循环遍历表和列,只是在我发现具有某个名称的那些上设置默认值不起作用,在执行session.add()时; session.flush()我收到以下错误:

AttributeError: 'builtin_function_or_method' object has no attribute '__visit_name__'
Run Code Online (Sandbox Code Playgroud)

这似乎与调用_set_parent(以及sqlalchemy.schema self._init_items(*toinit)中第721行的调用)有关.

有没有人知道是否有办法做到这一点,没有经过我所有的反射表,并添加列(..)行所有做同样的事情或诉诸真正丑陋的黑客?

python sqlalchemy

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