package Ġarrow . data Ċ Ċ import Ġarrow . free . Tr amp oline Ċ import Ġarrow . free . Tr amp oline F Ċ import Ġarrow . free . run T Ċ import Ġio . kot lint est . K Test JUnit Runner Ċ import Ġio . kot lint est . matchers . shouldBe Ċ import Ġorg . junit . runner . RunWith Ċ import Ġarrow . test . Unit Spec Ċ Ċ @ RunWith ( K Test JUnit Runner :: class ) Ċ class ĠTr amp oline Test Ġ: ĠUnit Spec () Ġ{ ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġ" tr amp oline Ġover Ġ 1 0 0 0 0 Ġshould Ġreturn Ġfalse Ġand Ġnot Ġbreak Ġthe Ġstack " Ġ{ ĊĠĠĠĠĠ Ġodd ( 1 0 0 0 0 ). run T () ĠshouldBe Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" tr amp oline Ġover Ġ 1 0 0 0 1 Ġshould Ġreturn Ġtrue Ġand Ġnot Ġbreak Ġthe Ġstack " Ġ{ ĊĠĠĠĠĠ Ġodd ( 1 0 0 0 1 ). run T () ĠshouldBe Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġodd ( n : ĠInt ): ĠTr amp oline F < Boolean > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( n ) Ġ{ ĊĠĠĠĠĠĠ 0 Ġ-> ĠTr amp oline . done ( false ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠTr amp oline . defer Ġ{ Ġeven ( n Ġ- Ġ 1 ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġeven ( n : ĠInt ): ĠTr amp oline F < Boolean > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( n ) Ġ{ ĊĠĠĠĠĠĠ 0 Ġ-> ĠTr amp oline . done ( true ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠTr amp oline . defer Ġ{ Ġodd ( n Ġ- Ġ 1 ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ