Clear all warnings
This commit is contained in:
@@ -10,17 +10,11 @@ import Dodge.RandomHelp
|
||||
import Data.Tree
|
||||
import Control.Monad.State
|
||||
import System.Random
|
||||
|
||||
{-
|
||||
Single branched tree (a trunk).
|
||||
-}
|
||||
{- Single branched tree (a trunk). -}
|
||||
treePath :: Int -> Tree ()
|
||||
treePath 0 = Node () []
|
||||
treePath x = Node () [treePath (x-1)]
|
||||
|
||||
{-
|
||||
Adds a branch at a certain point down a trunk.
|
||||
-}
|
||||
{- Adds a branch at a certain point down a trunk. -}
|
||||
addBranchAt
|
||||
:: Int -- ^ Depth to add branch at
|
||||
-> Tree () -- ^ Branch to add
|
||||
@@ -29,10 +23,8 @@ addBranchAt
|
||||
addBranchAt 0 b (Node () xs) = Node () (xs ++ [b])
|
||||
addBranchAt i b (Node () (x:xs))
|
||||
= Node () (addBranchAt (i-1) b x : xs)
|
||||
|
||||
{-
|
||||
Randomly generate a tree containing a maximum of three nodes.
|
||||
-}
|
||||
addBranchAt _ _ _ = error "Trying to add a branch too far along a tree"
|
||||
{- Randomly generate a tree containing a maximum of three nodes. -}
|
||||
smallBranch :: RandomGen g => State g (Tree ())
|
||||
smallBranch = takeOne
|
||||
[ treePath 0
|
||||
|
||||
@@ -40,6 +40,8 @@ Applies a function to the root of a tree.
|
||||
applyToRoot :: (a -> a) -> Tree a -> Tree a
|
||||
applyToRoot f (Node t ts) = Node (f t) ts
|
||||
|
||||
-- | Consider defining this using generalised recursion patterns
|
||||
treeSize :: Tree a -> Int
|
||||
treeSize = length . flatten
|
||||
|
||||
{- |
|
||||
@@ -72,7 +74,7 @@ treeChildNums :: Tree a -> Tree Int
|
||||
treeChildNums = setRoot 0
|
||||
where
|
||||
setRoot :: Int -> Tree a -> Tree Int
|
||||
setRoot i (Node x xs) = Node i (zipWith setRoot [0..] xs)
|
||||
setRoot i (Node _ xs) = Node i (zipWith setRoot [0..] xs)
|
||||
|
||||
{- |
|
||||
Makes each node into its path, i.e. the list of indices that,
|
||||
@@ -109,7 +111,7 @@ Find the depth of a tree along the trunk.
|
||||
-}
|
||||
trunkDepth :: Tree a -> Int
|
||||
trunkDepth (Node _ []) = 0
|
||||
trunkDepth (Node _ (x:xs)) = trunkDepth x + 1
|
||||
trunkDepth (Node _ (x:_)) = trunkDepth x + 1
|
||||
|
||||
{- |
|
||||
Split a tree at a given point along its trunk.
|
||||
@@ -121,6 +123,7 @@ splitTrunkAt 0 (Node x xs) = (Node x [],xs)
|
||||
splitTrunkAt i (Node y (x:xs)) =
|
||||
let (t, ts) = splitTrunkAt (i-1) x
|
||||
in (Node y (t : xs) , ts)
|
||||
splitTrunkAt _ (Node _ []) = error "Trying to split to short a trunk"
|
||||
|
||||
{- |
|
||||
Split a tree at a random point along its trunk.
|
||||
|
||||
Reference in New Issue
Block a user