hs=$(wildcard *.hs) all: $(hs:.hs=) c clean: \ $(hs:.hs=.o/clean) \ $(hs:.hs=.hi/clean) \ $(hs:.hs=/clean) %/clean: $(if $(wildcard $*),rm -f "$*") %: %.hs ghc $<