我有以下Traversable实例:
instance Traversable (Three' a) where
traverse f (Three' x y z) = Three' x <$> f y <*> f z
中缀运算符<$>
和<*>
具有相同的优先级,即4.
*ExercisesTraversable> :i <$>
(<$>) :: Functor f => (a -> b) -> f a -> f b
-- Defined in ‘Data.Functor’
infixl 4 <$>
*ExercisesTraversable> :i <*>
class Functor f => Applicative (f :: * -> *) where
...
(<*>) :: f (a -> b) -> f a -> f b
...
-- Defined in ‘GHC.Base’
infixl 4 <*>
首先要执行哪一项?
答案 0 :(得分:10)
他们不仅具有优先权4,而且还具有左联结性。这是<?php
/** More information regarding file_get_contents() - http://php.net/manual/en/function.file-get-contents.php **/
$End_Of_Line = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/path/to/Cards.txt');
/** More information regarding str-replace() - http://php.net/manual/en/function.str-replace.php **/
$End_Of_Line = str_replace('^M', '', $End_Of_Line);
/** Or use $End_Of_Line = str_replace('^M', "\r\n", $End_Of_Line); if you need new lines.. **/
/** More information regarding file_put_contents() - http://php.net/manual/en/function.file-put-contents.php **/
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/path/to/Cards.txt', $End_Of_Line);
?>
中的l
;也可以选择infixl
表示正确的关联性,infixr
表示“如果你需要知道关联性应该是什么,则抛出错误”。因此
infix
被解析为:
Three' x <$> f y <*> f z
首先执行执行,如果没有看到要问的(Three' x <$> f y) <*> f z
的实现,就无法回答这个问题;对(<*>)
进行评估时,Three' x <$> f y
会像往常一样进行评估,因此如果(<*>)
可以在不先评估(<*>)
来电的情况下取得进展,那么它就会。