Речь шла про возможности перегрузки функций. Хотел сделать соединение двух типов а результат строки. Но в Compiler Explorer написал паттерн матчингом.
Можно поменять местами, почему нет?
Мне сказали так, из PLD чата. Понятия не имею почему. Нужно тогда на деле посмотреть почему.
А-а, ты перегрузить хочешь, с одним именем, но разным порядком? Так не получится
Перезагрузить с разными типами второго аргумента. Первый аргумент всегда строка.
покажи что именно нельзя сделать, на словах неясно
Что я пытался реализовать: concatenation :: String -> Int -> String concatenation _str _num = _str ++ show _num concatenation :: String -> Bool -> String concatenation, _str _bool = _str ++ show _bool Итог: 1) Реализовал перегрузку через паттерн матчинг. https://github.com/AlexeyVologoda/Haskell_FirstPets/blob/main/main.hs На основе этого проекта мне дали фото как можно в 2 строки реализовать concatenation. На основе этого совета я спросил у людей можно ли поменять местами _str _num потому, что тайпкласс это Show по словам людей. Я вижу что Show a задан как первый аргумент, а _str это всегда строка и почему Int _num не в операции show _num. Люди сказали что не нужно менять. Что я представлял в себе "правильный" код: Из concatenation :: Show a => String -> a -> String concatenation _str _num = _str ++ show _num В: concatenation :: String -> Show a -> String concatenation _str _num = _str ++ show _num
Обсуждают сегодня