这是一个使用反应香蕉库的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) 镜头如何处理脱糖字段是关键字的情况?我似乎记得读过一些特别的东西,但是我不记得我在哪里阅读它或者"镜头"访问者的名字最终会是什么.
考虑以下:
{-# 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) 我刚从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是映射到电子邮件与其相关的其他模块之间的连接表的类. …
我写过这个函数:
{-# 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) 使用带有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) 我在一个现有的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行的调用)有关.
有没有人知道是否有办法做到这一点,没有经过我所有的反射表,并添加列(..)行所有做同样的事情或诉诸真正丑陋的黑客?