/core/src/main/scala/scalaz/Alpha.scala

http://github.com/scalaz/scalaz · Scala · 124 lines · 89 code · 33 blank · 2 comment · 0 complexity · 4f3872e9aa2251d5b0406605918e7c99 MD5 · raw file

  1. package scalaz
  2. /** An algebraic data type representing the characters 'a' to 'z' */
  3. sealed abstract class Alpha extends Product with Serializable {
  4. val toChar: Char
  5. def toUpperChar: Char = toChar.toUpper
  6. }
  7. object Alpha extends AlphaInstances {
  8. case object A extends Alpha {
  9. val toChar = 'a'
  10. }
  11. case object B extends Alpha {
  12. val toChar = 'b'
  13. }
  14. case object C extends Alpha {
  15. val toChar = 'c'
  16. }
  17. case object D extends Alpha {
  18. val toChar = 'd'
  19. }
  20. case object E extends Alpha {
  21. val toChar = 'e'
  22. }
  23. case object F extends Alpha {
  24. val toChar = 'f'
  25. }
  26. case object G extends Alpha {
  27. val toChar = 'g'
  28. }
  29. case object H extends Alpha {
  30. val toChar = 'h'
  31. }
  32. case object I extends Alpha {
  33. val toChar = 'i'
  34. }
  35. case object J extends Alpha {
  36. val toChar = 'j'
  37. }
  38. case object K extends Alpha {
  39. val toChar = 'k'
  40. }
  41. case object L extends Alpha {
  42. val toChar = 'l'
  43. }
  44. case object M extends Alpha {
  45. val toChar = 'm'
  46. }
  47. case object N extends Alpha {
  48. val toChar = 'n'
  49. }
  50. case object O extends Alpha {
  51. val toChar = 'o'
  52. }
  53. case object P extends Alpha {
  54. val toChar = 'p'
  55. }
  56. case object Q extends Alpha {
  57. val toChar = 'q'
  58. }
  59. case object R extends Alpha {
  60. val toChar = 'r'
  61. }
  62. case object S extends Alpha {
  63. val toChar = 's'
  64. }
  65. case object T extends Alpha {
  66. val toChar = 't'
  67. }
  68. case object U extends Alpha {
  69. val toChar = 'u'
  70. }
  71. case object V extends Alpha {
  72. val toChar = 'v'
  73. }
  74. case object W extends Alpha {
  75. val toChar = 'w'
  76. }
  77. case object X extends Alpha {
  78. val toChar = 'x'
  79. }
  80. case object Y extends Alpha {
  81. val toChar = 'y'
  82. }
  83. case object Z extends Alpha {
  84. val toChar = 'z'
  85. }
  86. val alphas: IList[Alpha] = IList(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z)
  87. implicit def ToCharFromAlpha(a: Alpha): Char = a.toChar
  88. }
  89. sealed abstract class AlphaInstances {
  90. // TODO
  91. }