-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | UI library for terminal. -- -- UI library for terminal. @package simple-ui @version 0.1.1 module Simple.Locale.Languages data LANG LANG_UNKNOWN :: LANG LANG_PL :: LANG getSystemLanguage :: LANG instance GHC.Show.Show Simple.Locale.Languages.LANG module Simple.Locale.TranslateClass class KnownSymbol a => Translate a translate :: Translate a => LANG -> Proxy a -> String module Simple.Locale.Translate translate :: Translate a => Proxy a -> String module Simple.Locale.TranslateTH tr :: QuasiQuoter module Simple.UI.Core.Attribute data Attribute a type AttributeList a = Attribute [a] attributeNew :: MonadIO m => a -> m (Attribute a) get :: MonadIO m => s -> (s -> Attribute a) -> m a set :: MonadIO m => s -> (s -> Attribute a) -> a -> m () modify :: MonadIO m => s -> (s -> Attribute a) -> (a -> a) -> m () add :: MonadIO m => s -> (s -> AttributeList a) -> (b -> a) -> b -> m () add' :: MonadIO m => s -> (s -> AttributeList a) -> a -> m () readAttr :: MonadIO m => Attribute a -> m a writeAttr :: MonadIO m => Attribute a -> a -> m () modifyAttr :: MonadIO m => Attribute a -> (a -> a) -> m () connectAttrTo :: MonadIO m => Attribute a -> Attribute a -> m () module Simple.UI.Core.Draw data Drawing type DrawingBuilder = ReaderT Drawing IO data DrawStyle DrawStyleNormal :: DrawStyle DrawStyleBold :: DrawStyle drawingNew :: MonadIO m => Int -> Int -> m Drawing drawingToImage :: MonadIO m => Drawing -> m Image drawingToPicture :: MonadIO m => Drawing -> m Picture drawingRun :: MonadIO m => Drawing -> DrawingBuilder a -> m a drawingGetWidth :: DrawingBuilder Int drawingGetHeight :: DrawingBuilder Int drawingGetSize :: DrawingBuilder (Int, Int) drawingPutChar :: Int -> Int -> Char -> DrawingBuilder () drawingPutCharWithAttr :: Color -> Color -> DrawStyle -> Int -> Int -> Char -> DrawingBuilder () drawingPutString :: Int -> Int -> String -> DrawingBuilder () drawingPutStringWithAttr :: Color -> Color -> DrawStyle -> Int -> Int -> String -> DrawingBuilder () drawingSetAttrs :: Color -> Color -> DrawStyle -> DrawingBuilder () drawingClear :: DrawingBuilder () drawingClearWithAttr :: Color -> Color -> DrawStyle -> DrawingBuilder () drawingSlice :: Int -> Int -> Int -> Int -> DrawingBuilder Drawing drawingSliceNew :: MonadIO m => Drawing -> Int -> Int -> Int -> Int -> m Drawing instance GHC.Classes.Eq Simple.UI.Core.Draw.DrawStyle module Simple.UI.Utils removeAt :: Int -> [a] -> [a] insertAt :: Int -> [a] -> a -> [a] module Simple.UI.Core.ListenerList type ListenerID = Integer type ListenerList a = IORef [(ListenerID, a)] on :: w -> (w -> ListenerList a) -> a -> UIApp u ListenerID on_ :: w -> (w -> ListenerList a) -> a -> UIApp u () fire :: Fire a b => w -> (w -> ListenerList a) -> b -> UIApp u () listenerNew :: MonadIO m => m (ListenerList a) instance Simple.UI.Core.ListenerList.Fire (Simple.UI.Core.Internal.UIApp.UIApp' ()) () instance Simple.UI.Core.ListenerList.Fire (a -> Simple.UI.Core.Internal.UIApp.UIApp' ()) a instance Simple.UI.Core.ListenerList.Fire (a -> b -> Simple.UI.Core.Internal.UIApp.UIApp' ()) (a, b) instance Simple.UI.Core.ListenerList.Fire (a -> b -> c -> Simple.UI.Core.Internal.UIApp.UIApp' ()) (a, b, c) instance Simple.UI.Core.ListenerList.Fire (a -> b -> c -> d -> Simple.UI.Core.Internal.UIApp.UIApp' ()) (a, b, c, d) module Simple.UI.Widgets.Widget class WidgetClass w castToWidget :: WidgetClass w => w -> Widget overrideWidget :: WidgetClass w => w -> State VirtualWidget () -> w keyPressed :: WidgetClass w => w -> ListenerList (Key -> [Modifier] -> UIApp' ()) draw :: WidgetClass w => w -> ListenerList (Drawing -> Int -> Int -> UIApp' ()) colorForeground :: WidgetClass w => w -> Attribute Color colorBackground :: WidgetClass w => w -> Attribute Color colorStyle :: WidgetClass w => w -> Attribute DrawStyle colorForegroundSelected :: WidgetClass w => w -> Attribute Color colorBackgroundSelected :: WidgetClass w => w -> Attribute Color colorStyleSelected :: WidgetClass w => w -> Attribute DrawStyle enabled :: WidgetClass w => w -> Attribute Bool visible :: WidgetClass w => w -> Attribute Bool name :: WidgetClass w => w -> String computeSize :: WidgetClass w => w -> UIApp u (Int, Int) data Widget castToWidget :: WidgetClass w => w -> Widget overrideWidget :: WidgetClass w => w -> State VirtualWidget () -> w overrideWidgetHelper :: WidgetClass p => Lens' w p -> w -> State VirtualWidget () -> w overrideHelper :: WidgetClass p => (p -> State s () -> p) -> Lens' w p -> w -> State s () -> w widgetNew :: UIApp u Widget connectColorsTo :: (WidgetClass w, WidgetClass v) => w -> v -> UIApp u () keyPressed :: WidgetClass w => w -> ListenerList (Key -> [Modifier] -> UIApp' ()) draw :: WidgetClass w => w -> ListenerList (Drawing -> Int -> Int -> UIApp' ()) colorForeground :: WidgetClass w => w -> Attribute Color colorBackground :: WidgetClass w => w -> Attribute Color colorStyle :: WidgetClass w => w -> Attribute DrawStyle colorForegroundSelected :: WidgetClass w => w -> Attribute Color colorBackgroundSelected :: WidgetClass w => w -> Attribute Color colorStyleSelected :: WidgetClass w => w -> Attribute DrawStyle enabled :: WidgetClass w => w -> Attribute Bool visible :: WidgetClass w => w -> Attribute Bool name :: WidgetClass w => w -> String computeSize :: WidgetClass w => w -> UIApp u (Int, Int) setColors :: WidgetClass w => w -> (Color, Color, DrawStyle, Color, Color, DrawStyle) -> UIApp u () getColors :: WidgetClass w => w -> UIApp u (Color, Color, DrawStyle, Color, Color, DrawStyle) virtualWidgetName :: Lens' VirtualWidget String virtualWidgetComputeSize :: Lens' VirtualWidget (UIApp' (Int, Int)) instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.Widget.Widget module Simple.UI.Widgets.Text data TextAlign TextAlignLeft :: TextAlign TextAlignRight :: TextAlign TextAlignCenter :: TextAlign data Text class WidgetClass w => TextClass w castToText :: TextClass w => w -> Text text :: TextClass w => w -> Attribute (Maybe String) align :: TextClass w => w -> Attribute TextAlign castToText :: TextClass w => w -> Text textNew :: Maybe String -> UIApp u Text text :: TextClass w => w -> Attribute (Maybe String) align :: TextClass w => w -> Attribute TextAlign instance Simple.UI.Widgets.Text.TextClass Simple.UI.Widgets.Text.Text instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.Text.Text module Simple.UI.Widgets.TextView data TextView class TextClass w => TextViewClass w castToTextView :: TextViewClass w => w -> TextView castToTextView :: TextViewClass w => w -> TextView textViewNew :: Maybe String -> UIApp u TextView instance Simple.UI.Widgets.TextView.TextViewClass Simple.UI.Widgets.TextView.TextView instance Simple.UI.Widgets.Text.TextClass Simple.UI.Widgets.TextView.TextView instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.TextView.TextView module Simple.UI.Widgets.Properties.Selected class WidgetClass w => HasSelected w selected :: HasSelected w => w -> Attribute Bool selectedGetColors :: HasSelected w => w -> UIApp u (Color, Color, DrawStyle) selected :: HasSelected w => w -> Attribute Bool selectedGetColors :: HasSelected w => w -> UIApp u (Color, Color, DrawStyle) module Simple.UI.Widgets.Label data Label class TextClass w => LabelClass w castToLabel :: LabelClass w => w -> Label castToLabel :: LabelClass w => w -> Label labelNew :: Maybe String -> UIApp u Label text :: TextClass w => w -> Attribute (Maybe String) align :: TextClass w => w -> Attribute TextAlign instance Simple.UI.Widgets.Label.LabelClass Simple.UI.Widgets.Label.Label instance Simple.UI.Widgets.Text.TextClass Simple.UI.Widgets.Label.Label instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.Label.Label module Simple.UI.Widgets.Edit data Edit class TextClass w => EditClass w castToEdit :: EditClass w => w -> Edit castToEdit :: EditClass w => w -> Edit editNew :: Maybe String -> UIApp u Edit text :: TextClass w => w -> Attribute (Maybe String) instance Simple.UI.Widgets.Edit.EditClass Simple.UI.Widgets.Edit.Edit instance Simple.UI.Widgets.Text.TextClass Simple.UI.Widgets.Edit.Edit instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.Edit.Edit module Simple.UI.Widgets.Container class ContainerClass w castToContainer :: ContainerClass w => w a -> Container a widgets :: ContainerClass w => w a -> AttributeList (Widget, LayoutData a) layout :: ContainerClass w => w a -> Attribute a addTo :: (ContainerClass w, WidgetClass u, MonadIO m) => w a -> u -> LayoutData a -> m () data Container a castToContainer :: ContainerClass w => w a -> Container a containerNew :: LayoutClass a => a -> UIApp u (Container a) widgets :: ContainerClass w => w a -> AttributeList (Widget, LayoutData a) layout :: ContainerClass w => w a -> Attribute a addTo :: (ContainerClass w, WidgetClass u, MonadIO m) => w a -> u -> LayoutData a -> m () class LayoutClass w where { type family LayoutData w; } layoutDraw :: (LayoutClass w, ContainerClass c) => c w -> Drawing -> Int -> Int -> UIApp u () layoutComputeSize :: (LayoutClass w, ContainerClass c) => c w -> UIApp u (Int, Int) data EmptyLayout EmptyLayout :: EmptyLayout data EmptyLayoutData EmptyLayoutData :: EmptyLayoutData layoutDraw :: (LayoutClass w, ContainerClass c) => c w -> Drawing -> Int -> Int -> UIApp u () layoutComputeSize :: (LayoutClass w, ContainerClass c) => c w -> UIApp u (Int, Int) instance Simple.UI.Widgets.Container.LayoutClass Simple.UI.Widgets.Container.EmptyLayout instance Data.Default.Class.Default Simple.UI.Widgets.Container.EmptyLayoutData instance Simple.UI.Widgets.Container.ContainerClass Simple.UI.Widgets.Container.Container instance Simple.UI.Widgets.Widget.WidgetClass (Simple.UI.Widgets.Container.Container a) module Simple.UI.Layouts.SingleLayout newtype SingleLayout SingleLayout :: Attribute Int -> SingleLayout [_singleLayoutIndex] :: SingleLayout -> Attribute Int data SingleLayoutData SingleLayoutData :: SingleLayoutData class LayoutClass w => SingleLayoutClass w layoutIndex :: SingleLayoutClass w => w -> Attribute Int singleLayoutNew :: UIApp u SingleLayout layoutIndex :: SingleLayoutClass w => w -> Attribute Int -- | The default value for this type. def :: Default a => a instance Simple.UI.Layouts.SingleLayout.SingleLayoutClass Simple.UI.Layouts.SingleLayout.SingleLayout instance Simple.UI.Widgets.Container.LayoutClass Simple.UI.Layouts.SingleLayout.SingleLayout instance Data.Default.Class.Default Simple.UI.Layouts.SingleLayout.SingleLayoutData module Simple.UI.Layouts.FillLayout data FillLayout FillLayoutHorizontal :: FillLayout FillLayoutVertical :: FillLayout data FillLayoutData FillLayoutData :: Bool -> Bool -> FillLayoutData [fillLayoutHExpand] :: FillLayoutData -> Bool [fillLayoutVExpand] :: FillLayoutData -> Bool fillLayoutVerticalNew :: UIApp u FillLayout fillLayoutHorizontalNew :: UIApp u FillLayout -- | The default value for this type. def :: Default a => a instance GHC.Classes.Eq Simple.UI.Layouts.FillLayout.FillLayout instance Simple.UI.Widgets.Container.LayoutClass Simple.UI.Layouts.FillLayout.FillLayout instance Data.Default.Class.Default Simple.UI.Layouts.FillLayout.FillLayoutData module Simple.UI.Widgets.StatusBar data StatusBar castToStatusBar :: StatusBarClass w => w -> StatusBar statusBarNew :: UIApp u StatusBar textLeft :: StatusBarClass w => w -> Attribute (Maybe String) textCenter :: StatusBarClass w => w -> Attribute (Maybe String) textRight :: StatusBarClass w => w -> Attribute (Maybe String) instance Simple.UI.Widgets.StatusBar.StatusBarClass Simple.UI.Widgets.StatusBar.StatusBar instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.StatusBar.StatusBar module Simple.UI.Widgets.Window data WindowType WindowTypeTopLevel :: WindowType WindowTypeDialog :: WindowType data Window a class ContainerClass w => WindowClass w castToWindow :: WindowClass w => w a -> Window a windowType :: (WindowClass w, WindowClass w) => w a -> WindowType windowFocus :: (WindowClass w, WindowClass w) => w a -> Attribute Bool castToWindow :: WindowClass w => w a -> Window a windowNew :: LayoutClass a => WindowType -> a -> UIApp u (Window a) windowType :: (WindowClass w, WindowClass w) => w a -> WindowType windowFocus :: (WindowClass w, WindowClass w) => w a -> Attribute Bool instance Simple.UI.Widgets.Window.WindowClass Simple.UI.Widgets.Window.Window instance Simple.UI.Widgets.Container.ContainerClass Simple.UI.Widgets.Window.Window instance Simple.UI.Widgets.Widget.WidgetClass (Simple.UI.Widgets.Window.Window a) instance GHC.Show.Show Simple.UI.Widgets.Window.WindowType instance GHC.Classes.Eq Simple.UI.Widgets.Window.WindowType module Simple.UI.Core.UIApp runUIApp :: u -> UIApp u () -> IO () runMainLoop :: (HasCallStack, WindowClass w) => w a -> UIApp u () runDialogLoop :: WidgetClass w => w -> UIApp u () mainLoopQuit :: UIApp u () mainSchedule :: UIApp' () -> UIApp u () mainScheduleAfter :: Int -> UIApp' () -> UIApp u () mainScheduleRepeat :: Int -> UIApp' () -> UIApp u () type UIApp u = ReaderT (AppConfig u) (StateT AppState IO) type UIApp' = UIApp () data UIAppEvent UIAppEventResize :: Int -> Int -> UIAppEvent UIAppEventKeyPressed :: Key -> [Modifier] -> UIAppEvent UIAppEventAction :: (UIApp' ()) -> UIAppEvent UIAppEventQuit :: UIAppEvent liftUIApp :: u -> UIApp u a -> UIApp' a liftUIApp' :: UIApp' a -> UIApp u a appUserData :: forall u_ajHf u_ajXr. Lens (AppConfig u_ajHf) (AppConfig u_ajXr) u_ajHf u_ajXr uniqueIdNew :: UIApp u Integer instance GHC.Show.Show Simple.UI.Core.UIApp.UIAppException instance GHC.Exception.Exception Simple.UI.Core.UIApp.UIAppException module Simple.UI.Widgets.TextItem data TextItem a class TextItemClass w castToTextItem :: TextItemClass w => w a -> TextItem a itemData :: TextItemClass w => w a -> Attribute (Maybe a) castToTextItem :: TextItemClass w => w a -> TextItem a textItemNew :: Maybe String -> UIApp u (TextItem a) itemData :: TextItemClass w => w a -> Attribute (Maybe a) instance Simple.UI.Widgets.TextItem.TextItemClass Simple.UI.Widgets.TextItem.TextItem instance Simple.UI.Widgets.Widget.WidgetClass (Simple.UI.Widgets.TextItem.TextItem a) instance Simple.UI.Widgets.Text.TextClass (Simple.UI.Widgets.TextItem.TextItem a) instance Simple.UI.Widgets.Properties.Selected.HasSelected (Simple.UI.Widgets.TextItem.TextItem a) module Simple.UI.Widgets.TextListView data TextListView a class TextListViewClass w castToTextListView :: TextListViewClass w => w a -> TextListView a textItemActivated :: TextListViewClass w => w a -> ListenerList (TextItem a -> UIApp' ()) textListViewCenterAt :: TextListViewClass w => w a -> Int -> Int -> UIApp u () textListViewReset :: TextListViewClass w => w a -> UIApp u () textListViewGetPos :: TextListViewClass w => w a -> UIApp u Int textListViewGoUp :: TextListViewClass w => w a -> UIApp u () textListViewGoDown :: TextListViewClass w => w a -> UIApp u () textListViewUpdate :: TextListViewClass w => w a -> UIApp u () castToTextListView :: TextListViewClass w => w a -> TextListView a textListViewNew :: (TextItem a -> Int -> UIApp' ()) -> UIApp u (TextListView a) textListViewCenterAt :: TextListViewClass w => w a -> Int -> Int -> UIApp u () textListViewReset :: TextListViewClass w => w a -> UIApp u () textListViewGetPos :: TextListViewClass w => w a -> UIApp u Int textListViewGoUp :: TextListViewClass w => w a -> UIApp u () textListViewGoDown :: TextListViewClass w => w a -> UIApp u () textListViewUpdate :: TextListViewClass w => w a -> UIApp u () textItemActivated :: TextListViewClass w => w a -> ListenerList (TextItem a -> UIApp' ()) instance Simple.UI.Widgets.TextListView.TextListViewClass Simple.UI.Widgets.TextListView.TextListView instance Simple.UI.Widgets.Widget.WidgetClass (Simple.UI.Widgets.TextListView.TextListView a) module Simple.UI.Widgets.SimpleMenuItem data SimpleMenuItem class WidgetClass w => SimpleMenuItemClass w castToSimpleMenuItem :: SimpleMenuItemClass w => w -> SimpleMenuItem menuItemChar :: SimpleMenuItemClass w => w -> Char activated :: SimpleMenuItemClass w => w -> ListenerList (UIApp' ()) menuItemActivate :: SimpleMenuItemClass w => w -> UIApp u () castToSimpleMenuItem :: SimpleMenuItemClass w => w -> SimpleMenuItem simpleMenuItemNew :: Char -> String -> UIApp u SimpleMenuItem menuItemChar :: SimpleMenuItemClass w => w -> Char menuItemActivate :: SimpleMenuItemClass w => w -> UIApp u () activated :: SimpleMenuItemClass w => w -> ListenerList (UIApp' ()) instance Simple.UI.Widgets.SimpleMenuItem.SimpleMenuItemClass Simple.UI.Widgets.SimpleMenuItem.SimpleMenuItem instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.SimpleMenuItem.SimpleMenuItem instance Simple.UI.Widgets.Properties.Selected.HasSelected Simple.UI.Widgets.SimpleMenuItem.SimpleMenuItem module Simple.UI.Widgets.SimpleMenuBar data SimpleMenuBar class WidgetClass w => SimpleMenuBarClass w castToSimpleMenuBar :: SimpleMenuBarClass w => w -> SimpleMenuBar menuBarItemAdd :: (SimpleMenuBarClass w, SimpleMenuItemClass item) => w -> item -> UIApp u () castToSimpleMenuBar :: SimpleMenuBarClass w => w -> SimpleMenuBar simpleMenuBarNew :: UIApp u SimpleMenuBar menuBarItemAdd :: (SimpleMenuBarClass w, SimpleMenuItemClass item) => w -> item -> UIApp u () instance Simple.UI.Widgets.SimpleMenuBar.SimpleMenuBarClass Simple.UI.Widgets.SimpleMenuBar.SimpleMenuBar instance Simple.UI.Widgets.Widget.WidgetClass Simple.UI.Widgets.SimpleMenuBar.SimpleMenuBar module Simple.UI.All -- | Replace the target of a Lens or all of the targets of a -- Setter or Traversal in our monadic state with a new -- value, irrespective of the old. -- -- This is an infix version of assign. -- --
--   >>> execState (do _1 .= c; _2 .= d) (a,b)
--   (c,d)
--   
-- --
--   >>> execState (both .= c) (a,b)
--   (c,c)
--   
-- --
--   (.=) :: MonadState s m => Iso' s a       -> a -> m ()
--   (.=) :: MonadState s m => Lens' s a      -> a -> m ()
--   (.=) :: MonadState s m => Traversal' s a -> a -> m ()
--   (.=) :: MonadState s m => Setter' s a    -> a -> m ()
--   
-- -- It puts the state in the monad or it gets the hose again. (.=) :: MonadState s m => ASetter s s a b -> b -> m () infix 4 .= -- | Replace the target of a Lens or all of the targets of a -- Setter or Traversal in our monadic state with a new -- value, irrespective of the old. -- -- This is an alias for (.=). -- --
--   >>> execState (do assign _1 c; assign _2 d) (a,b)
--   (c,d)
--   
-- --
--   >>> execState (both .= c) (a,b)
--   (c,c)
--   
-- --
--   assign :: MonadState s m => Iso' s a       -> a -> m ()
--   assign :: MonadState s m => Lens' s a      -> a -> m ()
--   assign :: MonadState s m => Traversal' s a -> a -> m ()
--   assign :: MonadState s m => Setter' s a    -> a -> m ()
--   
assign :: MonadState s m => ASetter s s a b -> b -> m () -- | View the value pointed to by a Getter, Iso or -- Lens or the result of folding over all the results of a -- Fold or Traversal that points at a monoidal value. -- --
--   view . toid
--   
-- --
--   >>> view (to f) a
--   f a
--   
-- --
--   >>> view _2 (1,"hello")
--   "hello"
--   
-- --
--   >>> view (to succ) 5
--   6
--   
-- --
--   >>> view (_2._1) ("hello",("world","!!!"))
--   "world"
--   
-- -- As view is commonly used to access the target of a -- Getter or obtain a monoidal summary of the targets of a -- Fold, It may be useful to think of it as having one of these -- more restricted signatures: -- --
--   view ::             Getter s a     -> s -> a
--   view :: Monoid m => Fold s m       -> s -> m
--   view ::             Iso' s a       -> s -> a
--   view ::             Lens' s a      -> s -> a
--   view :: Monoid m => Traversal' s m -> s -> m
--   
-- -- In a more general setting, such as when working with a Monad -- transformer stack you can use: -- --
--   view :: MonadReader s m             => Getter s a     -> m a
--   view :: (MonadReader s m, Monoid a) => Fold s a       -> m a
--   view :: MonadReader s m             => Iso' s a       -> m a
--   view :: MonadReader s m             => Lens' s a      -> m a
--   view :: (MonadReader s m, Monoid a) => Traversal' s a -> m a
--   
view :: MonadReader s m => Getting a s a -> m a -- | View the value pointed to by a Getter or Lens or the -- result of folding over all the results of a Fold or -- Traversal that points at a monoidal values. -- -- This is the same operation as view with the arguments flipped. -- -- The fixity and semantics are such that subsequent field accesses can -- be performed with (.). -- --
--   >>> (a,b)^._2
--   b
--   
-- --
--   >>> ("hello","world")^._2
--   "world"
--   
-- --
--   >>> import Data.Complex
--   
--   >>> ((0, 1 :+ 2), 3)^._1._2.to magnitude
--   2.23606797749979
--   
-- --
--   (^.) ::             s -> Getter s a     -> a
--   (^.) :: Monoid m => s -> Fold s m       -> m
--   (^.) ::             s -> Iso' s a       -> a
--   (^.) ::             s -> Lens' s a      -> a
--   (^.) :: Monoid m => s -> Traversal' s m -> m
--   
(^.) :: () => s -> Getting a s a -> a infixl 8 ^.