?

Log in

No account? Create an account
Выучить от сих до сих! - Дважды мудак [entries|archive|friends|userinfo]
Декларативное рулит

Site Meter

[ website | Мой сайт ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Выучить от сих до сих! [дек. 11, 2017|03:30 am]
Andy Melnikov
[Tags|, , , ]

Отседова: https://github.com/mpickering/apply-refact/blob/master/src/Refact/Fixity.hs#L115-L155
-- | All fixities defined in the Prelude.
preludeFixities :: [(String, Fixity)]
preludeFixities = concat
    [infixr_ 9  ["."]
    ,infixl_ 9  ["!!"]
    ,infixr_ 8  ["^","^^","**"]
    ,infixl_ 7  ["*","/","quot","rem","div","mod",":%","%"]
    ,infixl_ 6  ["+","-"]
    ,infixr_ 5  [":","++"]
    ,infix_  4  ["==","/=","<","<=",">=",">","elem","notElem"]
    ,infixr_ 3  ["&&"]
    ,infixr_ 2  ["||"]
    ,infixl_ 1  [">>",">>="]
    ,infixr_ 1  ["=<<"]
    ,infixr_ 0  ["$","$!","seq"]
    ]

-- | All fixities defined in the base package.
--
--   Note that the @+++@ operator appears in both Control.Arrows and
--   Text.ParserCombinators.ReadP. The listed precedence for @+++@ in
--   this list is that of Control.Arrows.
baseFixities :: [(String, Fixity)]
baseFixities = preludeFixities ++ concat
    [infixl_ 9 ["!","//","!:"]
    ,infixl_ 8 ["shift","rotate","shiftL","shiftR","rotateL","rotateR"]
    ,infixl_ 7 [".&."]
    ,infixl_ 6 ["xor"]
    ,infix_  6 [":+"]
    ,infixl_ 5 [".|."]
    ,infixr_ 5 ["+:+","<++","<+>"] -- fixity conflict for +++ between ReadP and Arrow
    ,infix_  5 ["\\\\"]
    ,infixl_ 4 ["<$>","<$","<*>","<*","*>","<**>"]
    ,infix_  4 ["elemP","notElemP"]
    ,infixl_ 3 ["<|>"]
    ,infixr_ 3 ["&&&","***"]
    ,infixr_ 2 ["+++","|||"]
    ,infixr_ 1 ["<=<",">=>",">>>","<<<","^<<","<<^","^>>",">>^"]
    ,infixl_ 0 ["on"]
    ,infixr_ 0 ["par","pseq"]
    ]
Это вам не таблички "как работает == в джаваскрипте" по карманам тырить!
СсылкаОтветить

Comments:
[User Picture]From: avnik
2017-12-11 04:36 pm
Ня. У меня вечная болезнь -- вспоминать приоритеты у всего этого хозяйства
(Ответить) (Thread)
[User Picture]From: maxim
2017-12-13 06:57 am
Согласен с предыдущим оратором — многовато, из операторов должны быть только скобки "(" ")" и аппликативный пробел :-)
Но выглядит красиво, на кастомный парсер смахивает.

Edited at 2017-12-13 07:00 (UTC)
(Ответить) (Thread)
[User Picture]From: nponeccop
2017-12-13 07:02 am
> и аппликативный пробел

Только пробел с переопределяемыми семантикой, приоритетом и инфиксностью, только хардкор!
(Ответить) (Parent) (Thread)
[User Picture]From: maxim
2017-12-13 03:39 pm
Кстати в Io можно было скобку и пробел переопределять.

Edited at 2017-12-13 15:40 (UTC)
(Ответить) (Parent) (Thread)