作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够编写一个 IO 操作,它会返回一个多态函数,该函数可以用于不同的值,但似乎我不能。任何人都可以帮我做吗?
f :: a -> Bool
f _ = True
getF :: Int -> (a -> Bool)
getF _ = f
getFIO :: IO (a -> Bool)
getFIO = return f
main :: IO ()
main = do
-- this works
print ((f :: Int -> Bool) (10::Int))
print ((f :: String -> Bool) "asd")
-- this works
let f' = getF 10
print (f' (10::Int))
print (f' "asd")
-- this doesn't
f'' <- getFIO
print (f'' (10::Int))
print (f'' "asd")
-- but this does
f''' <- getFIO
print (f''' (10::Int))
f'''' <- getFIO
print (f'''' "asd")
return ()
最佳答案
除了 ->
,Haskell 不允许你对类型构造函数使用多态参数。 .您需要使用 newtype
以利用该特别豁免。
{-# LANGUAGE RankNTypes #-}
newtype ToBool = ToBool {getToBool :: forall a . a -> Bool}
f :: ToBool
f = ToBool (const True)
getFIO :: IO ToBool
getFIO = return f
getToBool
每次想用
f
,不过没关系。
关于haskell - 能够从 Haskell 中的 monadic action 中获得多态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220139/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!