我想使用Data.List.NonEmpty,我正在搜索如何使用一个元素定义列表?我只能在列表中使用nonEmpty,但很明显它会返回一个Maybe而我不希望这样......
更新:我找到了这个解决方案
let emptyList = 5 :| []
Run Code Online (Sandbox Code Playgroud) 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... …
我现在正在使用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) 我正在尝试扩大对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)
我们可以<>
和这个家庭建立联系<*>,<$>,<&>
吗?我做的时候只想找一个快速的结论<*>,<$>,<&>
是<..>
用一个结构相关的东西,但是又是什么结构和关联运营商之间的联系?
我想以这种方式使用元组和镜头:
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) 我想将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做到吗?
你将如何实现这种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)