module Hydra.Ext.Haskell.Operators where

import Hydra.Util.Codetree.Ast
import Hydra.Util.Codetree.Script


andOp :: Op
andOp :: Op
andOp = String -> Int -> Associativity -> Op
op String
"&&" Int
3 Associativity
AssociativityRight

apOp :: Op
apOp :: Op
apOp = String -> Int -> Associativity -> Op
op String
"<*>" Int
4 Associativity
AssociativityLeft

appOp :: Op
appOp :: Op
appOp = Symbol -> Padding -> Precedence -> Associativity -> Op
Op (String -> Symbol
Symbol String
"") (Ws -> Ws -> Padding
Padding Ws
WsNone Ws
WsSpace) (Int -> Precedence
Precedence Int
0) Associativity
AssociativityLeft -- No source

applyOp :: Op
applyOp :: Op
applyOp = String -> Int -> Associativity -> Op
op String
"$" Int
0 Associativity
AssociativityRight

arrowOp :: Op
arrowOp :: Op
arrowOp = String -> Int -> Associativity -> Op
op String
"->" (forall a. Num a => a -> a
negate Int
1) Associativity
AssociativityRight

--assignOp = op "<-"

bindOp :: Op
bindOp :: Op
bindOp = String -> Int -> Associativity -> Op
op String
">>=" Int
1 Associativity
AssociativityLeft

caseOp :: Op
caseOp :: Op
caseOp = String -> Int -> Associativity -> Op
op String
"->" Int
0 Associativity
AssociativityNone -- No source

composeOp :: Op
composeOp :: Op
composeOp = String -> Int -> Associativity -> Op
op String
"." Int
9 Associativity
AssociativityLeft

concatOp :: Op
concatOp :: Op
concatOp = String -> Int -> Associativity -> Op
op String
"++" Int
5 Associativity
AssociativityRight

consOp :: Op
consOp :: Op
consOp = String -> Int -> Associativity -> Op
op String
":" Int
5 Associativity
AssociativityRight

defineOp :: Op
defineOp :: Op
defineOp = String -> Int -> Associativity -> Op
op String
"=" Int
0 Associativity
AssociativityNone -- No source

diamondOp :: Op
diamondOp :: Op
diamondOp = String -> Int -> Associativity -> Op
op String
"<>" Int
6 Associativity
AssociativityRight

divOp :: Op
divOp :: Op
divOp = String -> Int -> Associativity -> Op
op String
"`div`" Int
7 Associativity
AssociativityLeft

divideOp :: Op
divideOp :: Op
divideOp = String -> Int -> Associativity -> Op
op String
"/" Int
7 Associativity
AssociativityLeft

elemOp :: Op
elemOp :: Op
elemOp = String -> Int -> Associativity -> Op
op String
"`elem`" Int
4 Associativity
AssociativityNone

equalOp :: Op
equalOp :: Op
equalOp = String -> Int -> Associativity -> Op
op String
"==" Int
4 Associativity
AssociativityNone

fmapOp :: Op
fmapOp :: Op
fmapOp = String -> Int -> Associativity -> Op
op String
"<$>" Int
4 Associativity
AssociativityLeft

gtOp :: Op
gtOp :: Op
gtOp = String -> Int -> Associativity -> Op
op String
">" Int
4 Associativity
AssociativityNone

gteOp :: Op
gteOp :: Op
gteOp = String -> Int -> Associativity -> Op
op String
">=" Int
4 Associativity
AssociativityNone

indexOp :: Op
indexOp :: Op
indexOp = String -> Int -> Associativity -> Op
op String
"!!" Int
9 Associativity
AssociativityLeft

lambdaOp :: Op
lambdaOp :: Op
lambdaOp = String -> Int -> Associativity -> Op
op String
"->" (forall a. Num a => a -> a
negate Int
1) Associativity
AssociativityRight -- No source

ltOp :: Op
ltOp :: Op
ltOp = String -> Int -> Associativity -> Op
op String
"<" Int
4 Associativity
AssociativityNone

lteOp :: Op
lteOp :: Op
lteOp = String -> Int -> Associativity -> Op
op String
">=" Int
4 Associativity
AssociativityNone

minusOp :: Op
minusOp :: Op
minusOp = String -> Int -> Associativity -> Op
op String
"-" Int
6 Associativity
AssociativityBoth -- Originally: AssociativityLeft

modOp :: Op
modOp :: Op
modOp = String -> Int -> Associativity -> Op
op String
"`mod`" Int
7 Associativity
AssociativityLeft

multOp :: Op
multOp :: Op
multOp = String -> Int -> Associativity -> Op
op String
"*" Int
7 Associativity
AssociativityBoth -- Originally: AssociativityLeft

neqOp :: Op
neqOp :: Op
neqOp = String -> Int -> Associativity -> Op
op String
"/=" Int
4 Associativity
AssociativityNone

notElemOp :: Op
notElemOp :: Op
notElemOp = String -> Int -> Associativity -> Op
op String
"`notElem`" Int
4 Associativity
AssociativityNone

orOp :: Op
orOp :: Op
orOp = String -> Int -> Associativity -> Op
op String
"||" Int
2 Associativity
AssociativityRight

plusOp :: Op
plusOp :: Op
plusOp = String -> Int -> Associativity -> Op
op String
"+" Int
6 Associativity
AssociativityBoth -- Originally: AssociativityLeft

quotOp :: Op
quotOp :: Op
quotOp = String -> Int -> Associativity -> Op
op String
"`quot`" Int
7 Associativity
AssociativityLeft

remOp :: Op
remOp :: Op
remOp = String -> Int -> Associativity -> Op
op String
"`rem`" Int
7 Associativity
AssociativityLeft

--suchThatOp = op "|"

--thenOp = op "=>"

typeOp :: Op
typeOp :: Op
typeOp = String -> Int -> Associativity -> Op
op String
"::" Int
0 Associativity
AssociativityNone -- No source