-----------------------------------------------------------------------------
-- |
-- Module       : XMonad.Layout.LayoutCombinators
-- Description :  Easily combine multiple layouts into one composite layout.
-- Copyright    : (c) David Roundy <droundy@darcs.net>
-- License      : BSD
--
-- Maintainer   : none
-- Stability    : unstable
-- Portability  : portable
--
-- The "XMonad.Layout.LayoutCombinators" module provides combinators
-- for easily combining multiple layouts into one composite layout.
-----------------------------------------------------------------------------

module XMonad.Layout.LayoutCombinators
    ( -- * Usage
      -- $usage

      -- * Layout combinators
      -- $combine

      -- ** Combinators using DragPane vertical
      -- $dpv
      (*||*), (**||*),(***||*),(****||*),(***||**),(****||***)
    , (***||****),(*||****),(**||***),(*||***),(*||**)

      -- ** Combinators using DragPane horizontal
      -- $dph
    , (*//*), (**//*),(***//*),(****//*),(***//**),(****//***)
    , (***//****),(*//****),(**//***),(*//***),(*//**)

      -- ** Combinators using Tall (vertical)
      -- $tv
    , (*|*), (**|*),(***|*),(****|*),(***|**),(****|***)
    , (***|****),(*|****),(**|***),(*|***),(*|**)

      -- ** Combinators using Mirror Tall (horizontal)
      -- $mth
    , (*/*), (**/*),(***/*),(****/*),(***/**),(****/***)
    , (***/****),(*/****),(**/***),(*/***),(*/**)

      -- * Re-exports for backwards compatibility
    , (|||)
    , JumpToLayout(..)
    , NewSelect
    ) where

import XMonad
import XMonad.Layout.Combo
import XMonad.Layout.DragPane

-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
--
-- > import XMonad.Layout.LayoutCombinators
--
-- Then edit your @layoutHook@ to use the new layout combinators. For
-- example:
--
-- > myLayout = (Tall 1 (3/100) (1/2) *//* Full)  ||| (Tall 1 (3/100) (1/2) ***||** Full) ||| Full ||| etc..
-- > main = xmonad def { layoutHook = myLayout }
--
-- For more detailed instructions on editing the @layoutHook@ see
-- <https://xmonad.org/TUTORIAL.html#customizing-xmonad the tutorial> and
-- "XMonad.Doc.Extending#Editing_the_layout_hook".
--

-- $combine
-- Each of the following combinators combines two layouts into a
-- single composite layout by splitting the screen into two regions,
-- one governed by each layout.  Asterisks in the combinator names
-- denote the relative amount of screen space given to the respective
-- layouts.  For example, the '***||*' combinator gives three times as
-- much space to the left-hand layout as to the right-hand layout.

infixr 6 *||*, **||*, ***||*, ****||*, ***||**, ****||***, ***||****, *||****, **||***, *||***, *||**,
         *//*, **//*, ***//*, ****//*, ***//**, ****//***, ***//****, *//****, **//***, *//***, *//**,
         *|* , **|* , ***|* , ****|* , ***|** , ****|*** , ***|**** , *|**** , **|*** , *|*** , *|** ,
         */* , **/* , ***/* , ****/* , ***/** , ****/*** , ***/**** , */**** , **/*** , */*** , */**

-- $dpv
-- These combinators combine two layouts using "XMonad.Layout.DragPane" in
-- vertical mode.

(*||*),(**||*),(***||*),(****||*), (***||**),(****||***),
       (***||****),(*||****),(**||***),(*||***),(*||**) :: (Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
          l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a

*||* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*||*)      = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
2))
**||* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(**||*)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
2forall a. Fractional a => a -> a -> a
/Double
3))
***||* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***||*)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
4))
****||* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(****||*)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
4forall a. Fractional a => a -> a -> a
/Double
5))
***||** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***||**)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
5))
****||*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(****||***) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
4forall a. Fractional a => a -> a -> a
/Double
7))
***||**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***||****) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
7))
*||**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*||****)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
5))
**||*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(**||***)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
2forall a. Fractional a => a -> a -> a
/Double
5))
*||*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*||***)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
4))
*||** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*||**)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Vertical Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
3))

-- $dph
-- These combinators combine two layouts using "XMonad.Layout.DragPane" in
-- horizontal mode.

(*//*),(**//*),(***//*),(****//*), (***//**),(****//***),
       (***//****),(*//****),(**//***),(*//***),(*//**) :: (Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
          l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a

*//* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*//*)      = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
2))
**//* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(**//*)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
2forall a. Fractional a => a -> a -> a
/Double
3))
***//* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***//*)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
4))
****//* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(****//*)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
4forall a. Fractional a => a -> a -> a
/Double
5))
***//** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***//**)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
5))
****//*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(****//***) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
4forall a. Fractional a => a -> a -> a
/Double
7))
***//**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(***//****) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
3forall a. Fractional a => a -> a -> a
/Double
7))
*//**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*//****)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
5))
**//*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(**//***)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
2forall a. Fractional a => a -> a -> a
/Double
5))
*//*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*//***)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
4))
*//** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (DragPane ()) l1 l2 a
(*//**)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. DragType -> Double -> Double -> DragPane a
dragPane DragType
Horizontal Double
0.1 (Double
1forall a. Fractional a => a -> a -> a
/Double
3))

-- $tv
-- These combinators combine two layouts vertically using @Tall@.

(*|*),(**|*),(***|*),(****|*), (***|**),(****|***),
       (***|****),(*|****),(**|***),(*|***),(*|**) :: (Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a)
          => l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
*|* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(*|*)      = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
2))
**|* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(**|*)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
2forall a. Fractional a => a -> a -> a
/Rational
3))
***|* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(***|*)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
4))
****|* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(****|*)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
4forall a. Fractional a => a -> a -> a
/Rational
5))
***|** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(***|**)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
5))
****|*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(****|***) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
4forall a. Fractional a => a -> a -> a
/Rational
7))
***|**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(***|****) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
7))
*|**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(*|****)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
5))
**|*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(**|***)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
2forall a. Fractional a => a -> a -> a
/Rational
5))
*|*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(*|***)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
4))
*|** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Tall ()) l1 l2 a
(*|**)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
3))


-- $mth
-- These combinators combine two layouts horizontally using @Mirror
-- Tall@.

(*/*),(**/*),(***/*),(****/*), (***/**),(****/***),
       (***/****),(*/****),(**/***),(*/***),(*/**) :: (Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a)
          => l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
*/* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(*/*)      = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
2))
**/* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(**/*)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
2forall a. Fractional a => a -> a -> a
/Rational
3))
***/* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(***/*)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
4))
****/* :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(****/*)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
4forall a. Fractional a => a -> a -> a
/Rational
5))
***/** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(***/**)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
5))
****/*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(****/***) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
4forall a. Fractional a => a -> a -> a
/Rational
7))
***/**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(***/****) = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
3forall a. Fractional a => a -> a -> a
/Rational
7))
*/**** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(*/****)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
5))
**/*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(**/***)   = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
2forall a. Fractional a => a -> a -> a
/Rational
5))
*/*** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(*/***)    = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
4))
*/** :: forall a (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass l1 a, LayoutClass l2 a) =>
l1 a -> l2 a -> CombineTwo (Mirror Tall ()) l1 l2 a
(*/**)     = forall a (super :: * -> *) (l1 :: * -> *) (l2 :: * -> *).
(Read a, Eq a, LayoutClass super (), LayoutClass l1 a,
 LayoutClass l2 a) =>
super () -> l1 a -> l2 a -> CombineTwo (super ()) l1 l2 a
combineTwo (forall (l :: * -> *) a. l a -> Mirror l a
Mirror forall a b. (a -> b) -> a -> b
$ forall a. Int -> Rational -> Rational -> Tall a
Tall Int
1 Rational
0.1 (Rational
1forall a. Fractional a => a -> a -> a
/Rational
3))

type NewSelect = Choose
{-# DEPRECATED NewSelect "Use 'Choose' instead." #-}