Дело в том, что если x == '?', То, как вы это написали, function1 вернет то же самое, что и function2.И если function2 ничего не возвращает, то function1 сделает это для.
Поскольку трудно определить, что вы хотите сделать, короткий ответ - нет!
Но не сдавайтесь!в любом случае, есть вещи, которые вы можете сделать, которые на самом деле очень хороши.во-первых, если вы просто хотите узнать, что возвращает function2, и в случае, если x равен '?'верните что-то еще для функции1, которую вы делаете следующим образом:
function1 (x:xs)
| x == '?' = somethingElse
| x == '3' = do something with fun2Returns
...
where fun2Returns = function2 xs
Теперь давайте предположим, что вы хотите, чтобы ничего не возвращалось (то есть return null
в c-говорящем), вы должны четко указать это в себе.типы, используя Возможно тип.
function1 :: String -> Maybe b
function1 (x:xs)
| x == '?' = Nothing