Estou começando a aprender Haskell . Eu sou muito novo e estou lendo alguns livros on-line para entender meus conceitos básicos.
Um dos "memes" sobre os quais as pessoas familiarizadas costumam falar é a coisa toda "se compilar, funcionará *" - que eu acho que está relacionada à força do sistema de tipos.
Estou tentando entender por que exatamente Haskell é melhor do que outras linguagens estaticamente tipadas nesse sentido.
Em outras palavras, suponho que em Java, você poderia fazer algo hediondo como enterrar
ArrayList<String>()
para conter algo que realmente deveria ser ArrayList<Animal>()
. A coisa hedionda aqui é que você string
contém elephant, giraffe
, etc, e se alguém o inserir Mercedes
- seu compilador não irá ajudá-lo.
Se eu fiz fazer ArrayList<Animal>()
em seguida, em algum momento posterior, se eu decidir meu programa não é realmente sobre animais, é sobre veículos, então eu posso mudar, por exemplo, uma função que produz ArrayList<Animal>
para produzir ArrayList<Vehicle>
e minha IDE deve dizer-me em todos os lugares há é uma pausa na compilação.
Minha suposição é que é isso que as pessoas entendem por um sistema de tipos forte , mas não me é óbvio por que o Haskell é melhor. Dito de outra forma, você pode escrever Java bom ou ruim, presumo que você possa fazer o mesmo em Haskell (ou seja, colocar coisas em strings / ints que realmente devem ser tipos de dados de primeira classe).
Eu suspeito que estou perdendo algo importante / básico.
Eu ficaria muito feliz em ser mostrado o erro dos meus caminhos!
Maybe
apenas no final. Se eu tivesse que escolher apenas uma coisa que os idiomas mais populares deveriam emprestar de Haskell, seria isso. É uma ideia muito simples (não muito interessante do ponto de vista teórico), mas isso por si só tornaria nosso trabalho muito mais fácil.