... viz co psal Ink. Moduly jsou jen jmenné prostory ...
Never nikomu, kym si to sam neoveris.
Dobrá rada, ale vzhledem k tomu, že znám Fortran i ostatní věci, o kterých Ink psal, můžu z fleku říct, že on má pravdu a ty se ukrutně pleteš.
Zial neni to tak, dajme k tomu maly dokaz sporom

Nech teda su moduly name spaces. Potom ale, ked mam 2 rozne moduly, ktore obsahuju premennu s rovnakym menom, viem jej pouzitie rozlisit na zaklade mena modulu, t.j. takto:
module MA
character(20) :: foo = 'foo from module A'
end module MA
module MB
character(20) :: foo = 'foo from module B'
end module MB
program namespaces
use MA
use MB
write(*,*) MA%foo
write(*,*) MB%foo
end program namespaces
Ked sa vsak pokusim skompilovat to dostanem chybu
$ gfortran namespaces.f95 -o namespaces
namespaces.f95:12:17:
write(*,*) MA%foo
1
Error: Symbol at (1) is not appropriate for an expression
namespaces.f95:13:17:
write(*,*) MB%foo
1
Error: Symbol at (1) is not appropriate for an expression
Takuto chybu dostanem aj ked namiesto % pouzijem . alebo => atd.
To znamena, ze na zaklade mena modulu sa neda rozlisit, z ktoreho modulu rovnomenna premenna je.
Z toho vyplyva, ze moduly nie su menne priestory a ty nemas pravdu

Jinak co se týká teorie Idris má většinou pravdu. Proč se s ním hádat 
Ako som hore ukazal - je mi luto ale tentoraz pravdu nema.
Idris nam tu sice dava sebavedome a silne tvrdenia a po teoretickej stranke ma toho iste velmi vela precitane. Ale pripada mi to ako ked studuje v matematike definicie a vety bez praktickych cviceni. Moze sice ostatnych ohurovat ake je v tom eso, ale hlbsie pochopenie prichadza az pri rieseni praktickych uloh.
Moduly vo fortrane nie su namespaces. Fortran nema name spaces.
Namespaces si ale mozes v moduloch vytvorit pomocou derived data types a to takto:
module MA
type MA_T
character(20) :: foo = 'foo from module A'
end type
type(MA_T) :: A
end module MA
module MB
type MB_T
character(20) :: foo = 'foo from module B'
end type
type(MB_T) :: B
end module MB
program namespaces
use MA
use MB
write(*,*) A%foo
write(*,*) B%foo
end program namespaces
Output:
$ gfortran namespaces.f95 -o namespaces
$ ./namespaces
foo from module A
foo from module B