-- |
-- Examples in various locations...
--
-- Some random text.  Some random text.  Some random text.  Some random text.
-- Some random text.  Some random text.  Some random text.  Some random text.
-- Some random text.
--
-- >>> let x = 10
--
-- Some random text.  Some random text.  Some random text.  Some random text.
-- Some random text.  Some random text.  Some random text.  Some random text.
-- Some random text.
--
--
--   >>> baz
--   "foobar"

module TestCommentLocation.Foo (
  -- | Some documentation not attached to a particular Haskell entity
  --
  -- >>> test 10
  -- *** Exception: Prelude.undefined
  -- ...
  test,

  -- |
  -- >>> fib 10
  -- 55
  fib,

  -- |
  -- >>> bar
  -- "bar"
  bar,

  foo, baz
  ) where


-- | My test
--
-- >>> test 20
-- *** Exception: Prelude.undefined
-- ...
test :: Integer -> Integer
test :: Integer -> Integer
test = Integer -> Integer
forall a. HasCallStack => a
undefined

-- | Note that examples for 'fib' include the two examples below
-- and the one example with ^ syntax after 'fix'
--
-- >>> foo
-- "foo"

{- |
    Example:

     >>> fib 10
     55
-}

-- | Calculate Fibonacci number of given `n`.
fib :: Integer  -- ^ given `n`
                --
                -- >>> fib 10
                -- 55

    -> Integer  -- ^ Fibonacci of given `n`
                --
                -- >>> baz
                -- "foobar"
fib :: Integer -> Integer
fib Integer
0 = Integer
0
fib Integer
1 = Integer
1
fib Integer
n = Integer -> Integer
fib (Integer
n Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
1) Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
+ Integer -> Integer
fib (Integer
n Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
2)
-- ^ Example:
--
--   >>> fib 5
--   5

foo :: String
foo = String
"foo"
bar :: String
bar = String
"bar"
baz :: String
baz = String
foo String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
bar