 var mathGrade = Grade.B;
 
 mathGrade = .A
+
+print(mathGrade)
 /*:
 ## Switch & Enumerations
 

}

func count(counting: Count, closure: (number: Int) -> Void) -> Int {
    
    switch counting {
    case .Number(let number):
        return number
    case let .Forward(from, to):
        let fromNum = count(from, closure: closure)
        let toNum = count(to, closure: closure)
        
        if(fromNum <= toNum) {
            closure(number: fromNum)
            
            return count(Count.Forward(Count.Number(fromNum + 1), to), closure: closure)
        }
    case let .Backward(from, to):
        let fromNum = count(from, closure: closure)
        let toNum = count(to, closure: closure)
        
        if(fromNum >= toNum) {
            closure(number: fromNum)
            
            return count(Count.Backward(Count.Number(fromNum - 1), to), closure: closure)
        }
    }
    
    return 0
}

count(Count.Forward(Count.Number(1), Count.Number(10))) { (number) in
    
    print("forward to \(number)")
}
count(Count.Backward(Count.Number(10), Count.Number(1))) { (number) in
    
    print("backward from \(number)")
}
/*:
**Exercise:**
*/
/*:
**Checkpoint:**

    case F = "F Grade"
}

print(GradingScaleStr.A.rawValue)
/*:
### Implicitly Assigned

