diff options
Diffstat (limited to 'julia.html.markdown')
| -rw-r--r-- | julia.html.markdown | 36 | 
1 files changed, 27 insertions, 9 deletions
| diff --git a/julia.html.markdown b/julia.html.markdown index 5ccd6484..c5089dc3 100644 --- a/julia.html.markdown +++ b/julia.html.markdown @@ -14,7 +14,7 @@ This is based on Julia 0.3.  # Single line comments start with a hash (pound) symbol.  #= Multiline comments can be written -   by putting '#=' before the text  and '=#'  +   by putting '#=' before the text  and '=#'     after the text. They can also be nested.  =# @@ -81,10 +81,13 @@ false  # Strings are created with "  "This is a string." +# Julia has several types of strings, including ASCIIString and UTF8String. +# More on this in the Types section. +  # Character literals are written with '  'a' -# A string can be indexed like an array of characters +# Some strings can be indexed like an array of characters  "This is a string"[1] # => 'T' # Julia indexes from 1  # However, this is will not work well for UTF8 strings,  # so iterating over strings is recommended (map, for loops, etc). @@ -314,7 +317,7 @@ end  # For loops iterate over iterables. -# Iterable types include Range, Array, Set, Dict, and String. +# Iterable types include Range, Array, Set, Dict, and AbstractString.  for animal=["dog", "cat", "mouse"]      println("$animal is a mammal")      # You can use $ to interpolate variables or expression into strings @@ -537,6 +540,17 @@ subtypes(Number) # => 6-element Array{Any,1}:                   #     Real  subtypes(Cat) # => 0-element Array{Any,1} +# AbstractString, as the name implies, is also an abstract type +subtypes(AbstractString)    # 8-element Array{Any,1}: +                            #  Base.SubstitutionString{T<:AbstractString} +                            #  DirectIndexString +                            #  RepString +                            #  RevString{T<:AbstractString} +                            #  RopeString +                            #  SubString{T<:AbstractString} +                            #  UTF16String +                            #  UTF8String +  # Every type has a super type; use the `super` function to get it.  typeof(5) # => Int64  super(Int64) # => Signed @@ -546,17 +560,21 @@ super(Number) # => Any  super(super(Signed)) # => Number  super(Any) # => Any  # All of these type, except for Int64, are abstract. +typeof("fire") # => ASCIIString +super(ASCIIString) # => DirectIndexString +super(DirectIndexString) # => AbstractString +# Likewise here with ASCIIString  # <: is the subtyping operator  type Lion <: Cat # Lion is a subtype of Cat    mane_color -  roar::String +  roar::AbstractString  end  # You can define more constructors for your type  # Just define a function of the same name as the type  # and call an existing constructor to get a value of the correct type -Lion(roar::String) = Lion("green",roar) +Lion(roar::AbstractString) = Lion("green",roar)  # This is an outer constructor because it's outside the type definition  type Panther <: Cat # Panther is also a subtype of Cat @@ -670,7 +688,7 @@ square_area(l) = l * l      # square_area (generic function with 1 method)  square_area(5) #25  # What happens when we feed square_area an integer? -code_native(square_area, (Int32,))   +code_native(square_area, (Int32,))  	#	    .section    __TEXT,__text,regular,pure_instructions  	#	Filename: none  	#	Source line: 1              # Prologue @@ -703,10 +721,10 @@ code_native(square_area, (Float64,))  	#	    vmulsd  XMM0, XMM0, XMM0 # Scalar double precision multiply (AVX)  	#	    pop RBP  	#	    ret -	#	 +	#  # Note that julia will use floating point instructions if any of the  # arguements are floats. -# Let's calculate the area of a circle  +# Let's calculate the area of a circle  circle_area(r) = pi * r * r     # circle_area (generic function with 1 method)  circle_area(5)                  # 78.53981633974483 @@ -737,7 +755,7 @@ code_native(circle_area, (Float64,))  	#	    vmulsd  XMM0, XMM1, XMM0  	#	    pop RBP  	#	    ret -	#	 +	#  ```  ## Further Reading | 
