Hola,
Es como dice Valentina, no es False lo que tenés que usar sino alguna expresión cuyo valor sea bottom. Bottom es en realidad un valor semántico, no sintáctico, y que denota aquellas expresiones que no terminan o que dan error. Por ejemplo, 1/0 es un caso de error y su valor semántico es bottom. Lo que quiero decir con valor semántico es que los tipos del lenguaje (Bool, Int, Float o los tipos que escriba el programador) se interpretan como un conjunto (con un cierto orden parcial, pero pensemos que es simplemente un conjunto). Luego, cada expresión de un tipo t se interpreta en ese conjunto que representa a t. Por ejemplo, la interpretación de Int es el conjunto Z de los enteros, el conjunto de los reales es la interpretación de Float, etc. Al literal 3 de Haskell le correspondería el entero 3 de Z, etc. Para que ese conjunto denote todas las posibles expresiones de un tipo t hay que agregar que pasa cuando se tiene una expresión e :: t que diverge o da error. Para ello se agrega a cada conjunto de estos que interpretan tipos un valor que se le llama bottom (_|_).
Haskell provee una constante polimórfica undefined :: a cuyo valor es el bottom para todos los tipos. Esta constante simplemente da un error al querer ejecutarla. Uno igual puede construirse expresiones que dan bottom como resultado. Por ejemplo,
f x = f x
Al querer evaluar f v, para cualquier v, esto va a entrar en loop.
En la clase del teórico sobre evaluación perezosa hablamos de ese tema y damos ejemplos de expresiones cuyo valor es bottom.
Saludos,
Alberto.