Jestem nowy w wiązach i ogólnie programowaniu funkcjonalnym. Dostawałem zagadkową niezgodność typów, wykonując podział z wezwaniem do "pokazania". Ten kod powoduje niedopasowanie:W Elm, dlaczego jest to niedopasowanie typu Int-Float?
import Graphics.Element exposing (..)
columns = 2
main = placePiece 10
placePiece: Int -> Element
placePiece index =
show (index/columns)
kod produkuje ten błąd:
Type mismatch between the following types on line 9, column 3 to 22:
Int Float
It is related to the following expression:
show (index/columns)
które czytałem oznaczać, że oczekuje i Int, ale dostał pływaka. Ale pokaż działa z dowolnego typu. Jeśli użyję podłogi, aby wymusić podział na Int, otrzymam ten sam błąd. Ale jeśli mocno zakodowuję liczby, np. show (10/2)
Działa dobrze.
Więc jaka część powyższego kodu spodziewa się uzyskać Int?
W tym przypadku chciałem całkowitą podział , więc trzecia opcja była doskonała. Dziękuję również za wyjaśnienie, dlaczego literały działały. Sądziłem, że kompilator zinterpretuje literał jako float, jeśli umieścisz coś w rodzaju 'x = 1.0', z twardym, kodowanym miejscem dziesiętnym. – Tony