Po tom vyroku, ze Vim toho umi vic, nez bezne IDE, jsem se rozmyslel nad tim, jestli to teda pro tu Javu nebo Scalu nezkusim, abych se treba neco priucil, co bych mohl vyvojarum z IDEA navrhnout jako novou feature. Kdyz ale ctu, jak ve Vimu "funguje" trivialni refaktorovani jmena metody... Je tedy krajne nepravdepodobne, ze Vim bude umet neco navic, kdyz vec, co IDE zvladaji roky (desetileti?) nevzlada.
K Haskellu a "pretezovani" - myslim, ze je to s Javou nesrovnatelne. V Jave bezne menite metodou stav objektu, metoda ma nejmene nekolik radku (dano rozvlacnou syntaxi), vetsinou spise desitky. Naopak v Haskellu IMO mivate spise velmi kratke funkce (na pocet radku), ve kterych se ale deje hodne (vysoka mira obstrakce, strucna syntaxe a operatory ze symbolu). Mate jasne dany vstup a vystup funkce. Dalsi vec je, ze v Haskellu snad pretezovani ani neni - tam nelze definovat fkci, ktera ma jiny typ, nez predhozi definice:
a :: Int -> Int
a = (+) 1
a :: Int -> Int -> Int
a = (+)
main = do
print $ a 1
print $ a 1 2
[1 of 1] Compiling Main ( double_fn.hs, double_fn.o )
double_fn.hs:4:1:
Duplicate type signatures for ‘a’
at double_fn.hs:1:1
double_fn.hs:4:1
double_fn.hs:5:1:
Multiple declarations of ‘a’
Declared at: double_fn.hs:2:1
double_fn.hs:5:1
Take muzete pouzit guardy. To, cemu rikate "pretezovani" v Haskellu, spise slouzi jako ify v Jave - podle podoby parametru se vybere vetev, ktera se ma pouzit. Stezujete si snad u ifu, ze zalezi na pozici, kde je v kodu umisten?
PS: Jsem v Haskellu zelenac, tak snad nejsem uplne mimo

.