当前位置:  开发笔记 > 小程序 > 正文

变压器是否具有类型签名?

如何解决《变压器是否具有类型签名?》经验,为你挑选了1个好方法。

只是在考虑API设计。Haskell中的“常见”是什么?类型签名还是“隐藏”的变形金刚?

findById :: ID -> IO (Maybe User)
findById x = runMaybeT $ do
  ...
  return User

要么

findById :: ID -> MaybeT IO User
findById x = do
  ...
  return User

leftaroundab.. 5

如果这是为了简单起见,并且只有几个函数可以在IO中执行此操作,那么我只需要输入type即可IO (Maybe User)

如果这是一个遍及您的库的模式,那么我将给tfm-stack monad一个半抽象的名称:

type Request = MaybeT IO

findById :: ID -> Request User

... 甚至

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype Request a = Request (runRequest :: MaybeT IO a)
   deriving (Functor, Applicative, Monad)

进行签名ID -> MaybeT IO User不是很好:转换器仅在您在该monad中执行大量操作时才有帮助,但是在这种情况下,总是写出MaybeT IO违反DRY原则。



1> leftaroundab..:

如果这是为了简单起见,并且只有几个函数可以在IO中执行此操作,那么我只需要输入type即可IO (Maybe User)

如果这是一个遍及您的库的模式,那么我将给tfm-stack monad一个半抽象的名称:

type Request = MaybeT IO

findById :: ID -> Request User

... 甚至

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype Request a = Request (runRequest :: MaybeT IO a)
   deriving (Functor, Applicative, Monad)

进行签名ID -> MaybeT IO User不是很好:转换器仅在您在该monad中执行大量操作时才有帮助,但是在这种情况下,总是写出MaybeT IO违反DRY原则。

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有