特定の条件で終了する必要がある関数があります。たとえば、次の関数があるとします。
func :: Int -> [[Int]] -> [[Int]]
func _ [] = []
func x (a:as) = func2 x a:func x as
func2 :: Int -> [Int] -> [Int]
func2 _ [] = []
func2 x (a:as) = x*a:func2 x as
func one を通常どおり呼び出したいとしますが、[[Int]] 入力で負の値を取得するたびに終了します。そのため、正の値のみを扱います。では、続行するのではなく、プロセス全体を終了するシグナルを func2 に送信させるにはどうすればよいでしょうか?