The Makefile is a bit of a hack in that it does not actually do anything to check the dependencies of the targets, it only checks if there are any files with a ".hs" extension that are newer than the Makefile itself, and then passes these files to "ghc --make". I had to modify it to only search for files with a ".hs" extension that start with a capital letter because it was selecting various test programs I had written and passing them to "ghc --make" along with the "src/dao-main.hs" file.  This was confusing GHC because the test program was a "Main" module program and "src/dao-main.hs" is also a "Main" module program, and GHC cannot compile two modules of the same name. By searching for only files starting with a capital letter, only non-"Main" module program files are selected because these file names must match the module name which must always start with a capital letter.
The Makefile is a bit of a hack in that it does not actually do anything to check the dependencies of the targets, it only checks if there are any files with a ".hs" extension that are newer than the Makefile itself, and then passes these files to "ghc --make". I had to modify it to only search for files with a ".hs" extension that start with a capital letter because it was selecting various test programs I had written and passing them to "ghc --make" along with the "src/dao-main.hs" file.  This was confusing GHC because the test program was a "Main" module program and "src/dao-main.hs" is also a "Main" module program, and GHC cannot compile two modules of the same name. By searching for only files starting with a capital letter, only non-"Main" module program files are selected because these file names must match the module name which must always start with a capital letter.

printedheart/Dao