On Behalf Of 7stud --
# module MyModule
#     def MyModule.greet
#         puts "hello"
#     end
# end
# MyModule.greet
# include MyModule
# greet
# --output:--
# hello
# r1test.rb:10: undefined local variable or method `greet' for 
# main:Object (NameError)

ruby keeps it simpler.

botp@pc4all:~$ irb
irb(main):001:0> module MyModule
irb(main):002:1>   def greet
irb(main):003:2>     puts "hello"
irb(main):004:2>   end
irb(main):005:1>   module_function :greet
irb(main):006:1> end
=> MyModule
irb(main):007:0> MyModule.greet
hello
=> nil
irb(main):008:0> greet
NameError: undefined local variable or method `greet' for main:Object
        from (irb):8
        from :0
irb(main):009:0> include MyModule
=> Object
irb(main):010:0> greet
hello
=> nil
irb(main):011:0> public_methods.grep /greet/
=> []
irb(main):012:0> private_methods.grep /greet/
=> ["greet"]

ok, namespacewise and ease of invocation, they behave like "fxns" indeed. fair enough. 

now, consider further,

irb(main):013:0> module MyModule
irb(main):014:1>    def greet
irb(main):015:2>       puts "Aloha"
irb(main):016:2>    end
irb(main):017:1> end
=> nil
irb(main):018:0> MyModule.greet
hello
=> nil
irb(main):019:0> greet
Aloha
=> nil

Ah, another advantage: they allow for easy/independent modification, saving the original.

irb(main):020:0> private_methods.grep /greet/
=> []
irb(main):021:0> public_methods.grep /greet/
=> ["greet"]
irb(main):022:0> system "qri module_function | head"
------------------------------------------------- Module#module_function
     module_function(symbol, ...)    => self
------------------------------------------------------------------------
     Creates module functions for the named methods. These functions
     may be called with the module as a receiver, and also become
     available as instance methods to classes that mix in the module.
     Module functions are copies of the original, and so may be changed
     independently. The instance-method versions are made private. If
     used with no arguments, subsequently defined methods become module
     functions.
=> true

kind regards -botp