小编Nic*_*nin的帖子

如何创建一个nonEmpty列表?

我想使用Data.List.NonEmpty,我正在搜索如何使用一个元素定义列表?我只能在列表中使用nonEmpty,但很明显它会返回一个Maybe而我不希望这样......

更新:我找到了这个解决方案

let emptyList = 5 :| []
Run Code Online (Sandbox Code Playgroud)

haskell

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

(Data.Monoid) - Sum and Product deriving Bounded and Num at the same time?

in Data.Monoid :

newtype Sum a = Sum { getSum :: a }
    deriving ( Eq       -- ^ @since 2.01
             , Ord      -- ^ @since 2.01
             , Read     -- ^ @since 2.01
             , Show     -- ^ @since 2.01
             , Bounded  -- ^ @since 2.01
             , Generic  -- ^ @since 4.7.0.0
             , Generic1 -- ^ @since 4.7.0.0
             , Num      -- ^ @since 4.7.0.0
             )
Run Code Online (Sandbox Code Playgroud)

I don't understand how you could derive Num and Bounded on Sum with Integer, Float etc... …

haskell typeclass monoids deriving

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

使用注释搜索scala缓存框架(spring + ehcache)

我现在正在使用spring AOP + Ehcache进行scala应用.我非常喜欢将它与注释一起使用的简单性,但不是使用像spring这样的大框架来执行缓存的部分.

你知道scala缓存解决方案而不必使用像spring这样的大框架吗?

没有弹簧的东西:

 @Cacheable(cacheName = "users")
 def getByUserName(userName: String): User = {
   val userEntityFound = dao.findOne(dao.createQuery.field("email").equal(userName))
   userEntityMapper mapToDomainObject userEntityFound
  }
Run Code Online (Sandbox Code Playgroud)

spring caching scala ehcache guava

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

“ <>”在这个家族中的含义“ <*>,<$>,<&>`

我正在尝试扩大对Haskell中的符号的理解:

 $  : Function Application operator (Allow you to apply arguments over a function)
 &  : flipped version of Function Application Operator? (&) = flip ($)
<>  : associative operator (You'll find it in Semigroups and Monoids)
<$> : function application ($) lifted over a Functor structure
<&> : flipped functor map
<*> : applicative operator
Run Code Online (Sandbox Code Playgroud)

我们可以<>和这个家庭建立联系<*>,<$>,<&>吗?我做的时候只想找一个快速的结论<*>,<$>,<&><..>用一个结构相关的东西,但是又是什么结构和关联运营商之间的联系?

haskell naming-conventions category-theory monoids

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

通过 ReaderT 获取带镜头的元组子集

我想以这种方式使用元组和镜头:

myfct :: ReaderT (a,b,c,d,e) m a -> ReaderT (a,c,d) m a
myfct = zoom ...
Run Code Online (Sandbox Code Playgroud)

能够将输入元组修改为它的一个子集...

伪代码将是这样的:

zoom (_1,_3,_4)
Run Code Online (Sandbox Code Playgroud)

haskell lenses haskell-lens

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

Haskell:如何将数据类型转换为其特定的类型类之一?

我想将MySqlFakeClient和MySqlHttpClient转换为它们的常见类型类MySqlClient,我遇到了这个问题:

在此输入图像描述

对于以下代码:

loadClient :: MySqlClient client => String -> client
loadClient "fake" =  MySqlFakeClient 1 -- <- It's complaining here...
loadClient "prod" =  MySqlHttpClient "http://www.google.com"
loadClient _ = error "unknown"

data MySqlHttpClient = MySqlHttpClient String
data MySqlFakeClient = MySqlFakeClient Int

class MySqlClient client where
    config :: client -> String

instance MySqlClient MySqlHttpClient where

  config (MySqlHttpClient url) = url

instance MySqlClient MySqlFakeClient where

  config (MySqlFakeClient myInt) = show myInt
Run Code Online (Sandbox Code Playgroud)

我们不能在Haskell做到吗?

haskell

0
推荐指数
2
解决办法
140
查看次数

使用Data.Aeson基于字段的值解码json

你将如何实现这种Sum类型的FromJson?

data CommandRequest = CreateWorkspace {commandId :: UUID , workspaceId ::UUID }
                 | IntroduceIdea {commandId :: UUID , workspaceId ::UUID , ideaContent :: String}

instance ToJSON CommandRequest where
   toJSON (CreateWorkspace commandId workspaceId) = object [
          "commandId" .= commandId,
          "workspaceId" .= workspaceId,
          "commandName" .= pack "createWorkspace"]
   toJSON (IntroduceIdea commandId workspaceId ideaContent) = object [
             "commandId" .= commandId,
             "workspaceId" .= workspaceId,
             "commandName" .= pack "introduceIdea",
             "ideaContent" .= ideaContent
             ]

instance FromJSON CommandRequest  where ... ?
Run Code Online (Sandbox Code Playgroud)

所以基于commandName字段commandName,我将能够重新构造命令.

更新:在你们的帮助下,结果如下:

instance FromJSON CommandRequest  where

parseJSON …
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
1
解决办法
49
查看次数