Функция возвращает строку, когда ожидается bool
Что не так с этим фрагментом кода?
fun expd s:string = if size(s) > 0 then true else false;
Ошибка, которую я получаю:
- fun exnd s:string = if size(s) > a then true else false;
stdIn:657.1-837.8 Error: unbound variable or constructor: a
Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch]
expression: bool
result type: string
Почему это происходит?
1 ответ
Решение
Вам нужны круглые скобки s:string
потому что сейчас string
интерпретируется как тип вывода функции, а не тип параметра s
:
fun expd (s:string) = if size(s) > 0 then true else false
Кстати, компилятор может выводить все типы здесь без каких-либо аннотаций типов. Попробуйте следующее:
fun expd s = if size(s) > 0 then true else false
И, конечно, вы можете упростить это определение в:
fun expd s = size(s) > 0