Sophie

Sophie

distrib > Fedora > 20 > x86_64 > by-pkgid > d9f573299e87e886807be879704f0b6e > files > 137

julia-doc-0.3.4-1.fc20.noarch.rpm




<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Noteworthy Differences from other Languages &mdash; Julia Language 0.3.4 documentation</title>
  

  
  

  
  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/julia.css" type="text/css" />
  

  
    <link rel="stylesheet" href="../_static/julia.css" type="text/css" />
  
    <link rel="top" title="Julia Language 0.3.4 documentation" href="../index.html"/>
        <link rel="next" title="The Standard Library" href="../stdlib/base.html"/>
        <link rel="prev" title="Frequently Asked Questions" href="faq.html"/> 

  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-nav-search">
        <a href="http://julialang.org/"><img src="../_static/julia-logo.svg" class="logo"></a>
        <!--
        <a href="../index.html" class="fa fa-home"> Julia Language</a>
        -->
        <div role="search">
  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
      </div>

      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
        
        
            <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="getting-started.html">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="getting-started.html#resources">Resources</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="variables.html">Variables</a><ul>
<li class="toctree-l2"><a class="reference internal" href="variables.html#allowed-variable-names">Allowed Variable Names</a></li>
<li class="toctree-l2"><a class="reference internal" href="variables.html#stylistic-conventions">Stylistic Conventions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="integers-and-floating-point-numbers.html">Integers and Floating-Point Numbers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="integers-and-floating-point-numbers.html#integers">Integers</a></li>
<li class="toctree-l2"><a class="reference internal" href="integers-and-floating-point-numbers.html#floating-point-numbers">Floating-Point Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="integers-and-floating-point-numbers.html#arbitrary-precision-arithmetic">Arbitrary Precision Arithmetic</a></li>
<li class="toctree-l2"><a class="reference internal" href="integers-and-floating-point-numbers.html#numeric-literal-coefficients">Numeric Literal Coefficients</a></li>
<li class="toctree-l2"><a class="reference internal" href="integers-and-floating-point-numbers.html#literal-zero-and-one">Literal zero and one</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mathematical-operations.html">Mathematical Operations and Elementary Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mathematical-operations.html#arithmetic-operators">Arithmetic Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="mathematical-operations.html#bitwise-operators">Bitwise Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="mathematical-operations.html#updating-operators">Updating operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="mathematical-operations.html#numeric-comparisons">Numeric Comparisons</a></li>
<li class="toctree-l2"><a class="reference internal" href="mathematical-operations.html#elementary-functions">Elementary Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="complex-and-rational-numbers.html">Complex and Rational Numbers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="complex-and-rational-numbers.html#complex-numbers">Complex Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="complex-and-rational-numbers.html#rational-numbers">Rational Numbers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="strings.html">Strings</a><ul>
<li class="toctree-l2"><a class="reference internal" href="strings.html#characters">Characters</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#string-basics">String Basics</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#unicode-and-utf-8">Unicode and UTF-8</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#interpolation">Interpolation</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#common-operations">Common Operations</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#non-standard-string-literals">Non-Standard String Literals</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#regular-expressions">Regular Expressions</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#id3">Byte Array Literals</a></li>
<li class="toctree-l2"><a class="reference internal" href="strings.html#version-number-literals">Version Number Literals</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="functions.html">Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="functions.html#argument-passing-behavior">Argument Passing Behavior</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#the-return-keyword">The <tt class="docutils literal"><span class="pre">return</span></tt> Keyword</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#id1">Operators Are Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#operators-with-special-names">Operators With Special Names</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#anonymous-functions">Anonymous Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#multiple-return-values">Multiple Return Values</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#varargs-functions">Varargs Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#optional-arguments">Optional Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#keyword-arguments">Keyword Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#evaluation-scope-of-default-values">Evaluation Scope of Default Values</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#block-syntax-for-function-arguments">Block Syntax for Function Arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions.html#further-reading">Further Reading</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="control-flow.html">Control Flow</a><ul>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#compound-expressions">Compound Expressions</a></li>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#conditional-evaluation">Conditional Evaluation</a></li>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#short-circuit-evaluation">Short-Circuit Evaluation</a></li>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#repeated-evaluation-loops">Repeated Evaluation: Loops</a></li>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#exception-handling">Exception Handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="control-flow.html#tasks-aka-coroutines">Tasks (aka Coroutines)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="variables-and-scoping.html">Scope of Variables</a><ul>
<li class="toctree-l2"><a class="reference internal" href="variables-and-scoping.html#for-loops-and-comprehensions">For Loops and Comprehensions</a></li>
<li class="toctree-l2"><a class="reference internal" href="variables-and-scoping.html#constants">Constants</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="types.html">Types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="types.html#type-declarations">Type Declarations</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#abstract-types">Abstract Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#bits-types">Bits Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#composite-types">Composite Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#immutable-composite-types">Immutable Composite Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#declared-types">Declared Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#tuple-types">Tuple Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#type-unions">Type Unions</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#man-parametric-types">Parametric Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#type-aliases">Type Aliases</a></li>
<li class="toctree-l2"><a class="reference internal" href="types.html#operations-on-types">Operations on Types</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="methods.html">Methods</a><ul>
<li class="toctree-l2"><a class="reference internal" href="methods.html#defining-methods">Defining Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="methods.html#method-ambiguities">Method Ambiguities</a></li>
<li class="toctree-l2"><a class="reference internal" href="methods.html#parametric-methods">Parametric Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="methods.html#note-on-optional-and-keyword-arguments">Note on Optional and keyword Arguments</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="constructors.html">Constructors</a><ul>
<li class="toctree-l2"><a class="reference internal" href="constructors.html#outer-constructor-methods">Outer Constructor Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="constructors.html#inner-constructor-methods">Inner Constructor Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="constructors.html#incomplete-initialization">Incomplete Initialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="constructors.html#parametric-constructors">Parametric Constructors</a></li>
<li class="toctree-l2"><a class="reference internal" href="constructors.html#case-study-rational">Case Study: Rational</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="conversion-and-promotion.html">Conversion and Promotion</a><ul>
<li class="toctree-l2"><a class="reference internal" href="conversion-and-promotion.html#conversion">Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="conversion-and-promotion.html#promotion">Promotion</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="modules.html">Modules</a><ul>
<li class="toctree-l2"><a class="reference internal" href="modules.html#summary-of-module-usage">Summary of module usage</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="metaprogramming.html">Metaprogramming</a><ul>
<li class="toctree-l2"><a class="reference internal" href="metaprogramming.html#expressions-and-eval">Expressions and Eval</a></li>
<li class="toctree-l2"><a class="reference internal" href="metaprogramming.html#macros">Macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="metaprogramming.html#reflection">Reflection</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="arrays.html">Multi-dimensional Arrays</a><ul>
<li class="toctree-l2"><a class="reference internal" href="arrays.html#arrays">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="arrays.html#sparse-matrices">Sparse Matrices</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="linear-algebra.html">Linear algebra</a><ul>
<li class="toctree-l2"><a class="reference internal" href="linear-algebra.html#matrix-factorizations">Matrix factorizations</a></li>
<li class="toctree-l2"><a class="reference internal" href="linear-algebra.html#special-matrices">Special matrices</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="networking-and-streams.html">Networking and Streams</a><ul>
<li class="toctree-l2"><a class="reference internal" href="networking-and-streams.html#basic-stream-i-o">Basic Stream I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="networking-and-streams.html#text-i-o">Text I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="networking-and-streams.html#working-with-files">Working with Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="networking-and-streams.html#a-simple-tcp-example">A simple TCP example</a></li>
<li class="toctree-l2"><a class="reference internal" href="networking-and-streams.html#resolving-ip-addresses">Resolving IP Addresses</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="parallel-computing.html">Parallel Computing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#data-movement">Data Movement</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#parallel-map-and-loops">Parallel Map and Loops</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#synchronization-with-remote-references">Synchronization With Remote References</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#scheduling">Scheduling</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#distributed-arrays">Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#constructing-distributed-arrays">Constructing Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#distributed-array-operations">Distributed Array Operations</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#shared-arrays-experimental">Shared Arrays (Experimental)</a></li>
<li class="toctree-l2"><a class="reference internal" href="parallel-computing.html#clustermanagers">ClusterManagers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="running-external-programs.html">Running External Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="running-external-programs.html#interpolation">Interpolation</a></li>
<li class="toctree-l2"><a class="reference internal" href="running-external-programs.html#quoting">Quoting</a></li>
<li class="toctree-l2"><a class="reference internal" href="running-external-programs.html#pipelines">Pipelines</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="calling-c-and-fortran-code.html">Calling C and Fortran Code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#mapping-c-types-to-julia">Mapping C Types to Julia</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#accessing-data-through-a-pointer">Accessing Data through a Pointer</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#passing-pointers-for-modifying-inputs">Passing Pointers for Modifying Inputs</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#garbage-collection-safety">Garbage Collection Safety</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#non-constant-function-specifications">Non-constant Function Specifications</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#indirect-calls">Indirect Calls</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#calling-convention">Calling Convention</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#accessing-global-variables">Accessing Global Variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#passing-julia-callback-functions-to-c">Passing Julia Callback Functions to C</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#c">C++</a></li>
<li class="toctree-l2"><a class="reference internal" href="calling-c-and-fortran-code.html#handling-platform-variations">Handling Platform Variations</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="interacting-with-julia.html">Interacting With Julia</a><ul>
<li class="toctree-l2"><a class="reference internal" href="interacting-with-julia.html#the-different-prompt-modes">The different prompt modes</a></li>
<li class="toctree-l2"><a class="reference internal" href="interacting-with-julia.html#key-bindings">Key bindings</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="embedding.html">Embedding Julia</a><ul>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#high-level-embedding">High-Level Embedding</a></li>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#converting-types">Converting Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#calling-julia-functions">Calling Julia Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#memory-management">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#working-with-arrays">Working with Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="embedding.html#exceptions">Exceptions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="packages.html">Packages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="packages.html#package-status">Package Status</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#adding-and-removing-packages">Adding and Removing Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#installing-unregistered-packages">Installing Unregistered Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#updating-packages">Updating Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#checkout-pin-and-free">Checkout, Pin and Free</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="packages.html#package-development">Package Development</a><ul>
<li class="toctree-l2"><a class="reference internal" href="packages.html#initial-setup">Initial Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#generating-a-new-package">Generating a New Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#making-your-package-available">Making Your Package Available</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#publishing-your-package">Publishing Your Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#tagging-package-versions">Tagging Package Versions</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#fixing-package-requirements">Fixing Package Requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="packages.html#man-package-requirements">Requirements Specification</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="performance-tips.html">Performance Tips</a><ul>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#avoid-global-variables">Avoid global variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#measure-performance-with-time-and-pay-attention-to-memory-allocation">Measure performance with <tt class="docutils literal"><span class="pre">&#64;time</span></tt> and pay attention to memory allocation</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#tools">Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#avoid-containers-with-abstract-type-parameters">Avoid containers with abstract type parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#type-declarations">Type declarations</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#break-functions-into-multiple-definitions">Break functions into multiple definitions</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#write-type-stable-functions">Write &#8220;type-stable&#8221; functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#avoid-changing-the-type-of-a-variable">Avoid changing the type of a variable</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#separate-kernel-functions">Separate kernel functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#access-arrays-in-memory-order-along-columns">Access arrays in memory order, along columns</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#pre-allocating-outputs">Pre-allocating outputs</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#avoid-string-interpolation-for-i-o">Avoid string interpolation for I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#fix-deprecation-warnings">Fix deprecation warnings</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#tweaks">Tweaks</a></li>
<li class="toctree-l2"><a class="reference internal" href="performance-tips.html#performance-annotations">Performance Annotations</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="style-guide.html">Style Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#write-functions-not-just-scripts">Write functions, not just scripts</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#avoid-writing-overly-specific-types">Avoid writing overly-specific types</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#handle-excess-argument-diversity-in-the-caller">Handle excess argument diversity in the caller</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#append-to-names-of-functions-that-modify-their-arguments">Append <cite>!</cite> to names of functions that modify their arguments</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#avoid-strange-type-unions">Avoid strange type Unions</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#try-to-avoid-nullable-fields">Try to avoid nullable fields</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#avoid-elaborate-container-types">Avoid elaborate container types</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#avoid-underscores-in-names">Avoid underscores in names</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-overuse-try-catch">Don&#8217;t overuse try-catch</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-parenthesize-conditions">Don&#8217;t parenthesize conditions</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-overuse">Don&#8217;t overuse ...</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-use-unnecessary-static-parameters">Don&#8217;t use unnecessary static parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#avoid-confusion-about-whether-something-is-an-instance-or-a-type">Avoid confusion about whether something is an instance or a type</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-overuse-macros">Don&#8217;t overuse macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-expose-unsafe-operations-at-the-interface-level">Don&#8217;t expose unsafe operations at the interface level</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#don-t-overload-methods-of-base-container-types">Don&#8217;t overload methods of base container types</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#be-careful-with-type-equality">Be careful with type equality</a></li>
<li class="toctree-l2"><a class="reference internal" href="style-guide.html#do-not-write-x-f-x">Do not write <tt class="docutils literal"><span class="pre">x-&gt;f(x)</span></tt></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Frequently Asked Questions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="faq.html#sessions-and-the-repl">Sessions and the REPL</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#functions">Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#types-type-declarations-and-constructors">Types, type declarations, and constructors</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#nothingness-and-missing-values">Nothingness and missing values</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#julia-releases">Julia Releases</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#developing-julia">Developing Julia</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Noteworthy Differences from other Languages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#noteworthy-differences-from-matlab">Noteworthy differences from MATLAB</a></li>
<li class="toctree-l2"><a class="reference internal" href="#noteworthy-differences-from-r">Noteworthy differences from R</a></li>
<li class="toctree-l2"><a class="reference internal" href="#noteworthy-differences-from-python">Noteworthy differences from Python</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/base.html">The Standard Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#getting-around">Getting Around</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#all-objects">All Objects</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#types">Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#generic-functions">Generic Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#syntax">Syntax</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#iteration">Iteration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#general-collections">General Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#iterable-collections">Iterable Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#indexable-collections">Indexable Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#associative-collections">Associative Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#set-like-collections">Set-Like Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#dequeues">Dequeues</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#strings">Strings</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#i-o">I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#network-i-o">Network I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#text-i-o">Text I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#multimedia-i-o">Multimedia I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#memory-mapped-i-o">Memory-mapped I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#standard-numeric-types">Standard Numeric Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#mathematical-operators">Mathematical Operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#mathematical-functions">Mathematical Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#data-formats">Data Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#numbers">Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#bigfloats">BigFloats</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#random-numbers">Random Numbers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#arrays">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#combinatorics">Combinatorics</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#statistics">Statistics</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#signal-processing">Signal Processing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#numerical-integration">Numerical Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#parallel-computing">Parallel Computing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#distributed-arrays">Distributed Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#shared-arrays-experimental-unix-only-feature">Shared Arrays (Experimental, UNIX-only feature)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#system">System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#c-interface">C Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#errors">Errors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#tasks">Tasks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#events">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#reflection">Reflection</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/base.html#internals">Internals</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/sparse.html">Sparse Matrices</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/linalg.html">Linear Algebra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/linalg.html#module-Base.LinAlg.BLAS">BLAS Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/constants.html">Constants</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/file.html">Filesystem</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/punctuation.html">Punctuation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/sort.html">Sorting and Related Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/sort.html#sorting-functions">Sorting Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/sort.html#order-related-functions">Order-Related Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/sort.html#sorting-algorithms">Sorting Algorithms</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/pkg.html">Package Manager Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/collections.html">Collections and Data Structures</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/collections.html#priorityqueue">PriorityQueue</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/collections.html#heap-functions">Heap Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/graphics.html">Graphics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/graphics.html#geometry">Geometry</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/test.html">Unit and Functional Testing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/test.html#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/test.html#handlers">Handlers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/test.html#macros">Macros</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/test.html#functions">Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/test.html#testing-base-julia">Testing Base Julia</a></li>
<li class="toctree-l1"><a class="reference internal" href="../stdlib/profile.html">Profiling</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/profile.html#basic-usage">Basic usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/profile.html#accumulation-and-clearing">Accumulation and clearing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/profile.html#options-for-controlling-the-display-of-profile-results">Options for controlling the display of profile results</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/profile.html#configuration">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stdlib/profile.html#function-reference">Function reference</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../devdocs/julia.html">Documentation of Julia&#8217;s Internals</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/cartesian.html">Base.Cartesian</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/sysimg.html">System Image Building</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../devdocs/C.html">Developing/debugging Julia&#8217;s C code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/backtraces.html">Reporting and analyzing crashes (segfaults)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devdocs/debuggingtips.html">gdb debugging tips</a></li>
</ul>
</li>
</ul>

        
      </div>
      &nbsp;
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../index.html">Julia Language</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../index.html">Docs</a> &raquo;</li>
      
    <li>Noteworthy Differences from other Languages</li>
      <li class="wy-breadcrumbs-aside">
        
          <a href="../_sources/manual/noteworthy-differences.txt" rel="nofollow"> View page source</a>
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document">
            
  <div class="section" id="noteworthy-differences-from-other-languages">
<span id="man-noteworthy-differences"></span><h1>Noteworthy Differences from other Languages<a class="headerlink" href="#noteworthy-differences-from-other-languages" title="Permalink to this headline">¶</a></h1>
<div class="section" id="noteworthy-differences-from-matlab">
<h2>Noteworthy differences from MATLAB<a class="headerlink" href="#noteworthy-differences-from-matlab" title="Permalink to this headline">¶</a></h2>
<p>Although MATLAB users may find Julia&#8217;s syntax familiar,
Julia is in no way a MATLAB clone. There are major syntactic and
functional differences. The following are some noteworthy
differences that may trip up Julia users accustomed to MATLAB:</p>
<ul class="simple">
<li>Arrays are indexed with square brackets, <tt class="docutils literal"><span class="pre">A[i,j]</span></tt>.</li>
<li>Arrays are assigned by reference. After <tt class="docutils literal"><span class="pre">A=B</span></tt>, assigning into <tt class="docutils literal"><span class="pre">B</span></tt>
will modify <tt class="docutils literal"><span class="pre">A</span></tt> as well.</li>
<li>Values are passed and assigned by reference. If a function modifies
an array, the changes will be visible in the caller.</li>
<li>Matlab combines allocation and assignment into single statements,
e.g., <tt class="docutils literal"><span class="pre">a(4)</span> <span class="pre">=</span> <span class="pre">3.2</span></tt> creates the array <tt class="docutils literal"><span class="pre">a</span> <span class="pre">=</span> <span class="pre">[0</span> <span class="pre">0</span> <span class="pre">0</span> <span class="pre">3.2]</span></tt> and <tt class="docutils literal"><span class="pre">a(5)</span> <span class="pre">=</span> <span class="pre">7</span></tt>
grows it. Julia separates allocation and assignment:
if <tt class="docutils literal"><span class="pre">a</span></tt> is of length 4, <tt class="docutils literal"><span class="pre">a[5]</span> <span class="pre">=</span> <span class="pre">7</span></tt> yields an error. Julia has a <tt class="docutils literal"><span class="pre">push!</span></tt>
function which grows <tt class="docutils literal"><span class="pre">Vectors</span></tt> much more efficiently than Matlab&#8217;s
<tt class="docutils literal"><span class="pre">a(end+1)</span> <span class="pre">=</span> <span class="pre">val</span></tt>.</li>
<li>The imaginary unit <tt class="docutils literal"><span class="pre">sqrt(-1)</span></tt> is represented in julia with <tt class="docutils literal"><span class="pre">im</span></tt>.</li>
<li>Literal numbers without a decimal point (such as <tt class="docutils literal"><span class="pre">42</span></tt>) create integers
instead of floating point numbers. Arbitrarily large integer
literals are supported. But this means that some operations such as
<tt class="docutils literal"><span class="pre">2^-1</span></tt> will throw a domain error as the result is not an integer (see
<a class="reference internal" href="faq.html#man-domain-error"><em>the FAQ entry on domain errors</em></a> for details).</li>
<li>Multiple values are returned and assigned with parentheses,
<tt class="docutils literal"><span class="pre">return</span> <span class="pre">(a,</span> <span class="pre">b)</span></tt> and <tt class="docutils literal"><span class="pre">(a,</span> <span class="pre">b)</span> <span class="pre">=</span> <span class="pre">f(x)</span></tt>.</li>
<li>Julia has 1-dimensional arrays. Column vectors are of size <tt class="docutils literal"><span class="pre">N</span></tt>, not
<tt class="docutils literal"><span class="pre">Nx1</span></tt>. For example, <tt class="docutils literal"><span class="pre">rand(N)</span></tt> makes a 1-dimensional array.</li>
<li>Concatenating scalars and arrays with the syntax <tt class="docutils literal"><span class="pre">[x,y,z]</span></tt>
concatenates in the first dimension (&#8220;vertically&#8221;). For the second
dimension (&#8220;horizontally&#8221;), use spaces as in <tt class="docutils literal"><span class="pre">[x</span> <span class="pre">y</span> <span class="pre">z]</span></tt>. To
construct block matrices (concatenating in the first two dimensions),
the syntax <tt class="docutils literal"><span class="pre">[a</span> <span class="pre">b;</span> <span class="pre">c</span> <span class="pre">d]</span></tt> is used to avoid confusion.</li>
<li>Colons <tt class="docutils literal"><span class="pre">a:b</span></tt> and <tt class="docutils literal"><span class="pre">a:b:c</span></tt> construct <tt class="docutils literal"><span class="pre">Range</span></tt> objects. To
construct a full vector, use <tt class="docutils literal"><span class="pre">linspace</span></tt>, or &#8220;concatenate&#8221; the range
by enclosing it in brackets, <tt class="docutils literal"><span class="pre">[a:b]</span></tt>.</li>
<li>Functions return values using the <tt class="docutils literal"><span class="pre">return</span></tt> keyword, instead of by
listing their names in the function definition (see
<a class="reference internal" href="functions.html#man-return-keyword"><em>The return Keyword</em></a> for details).</li>
<li>A file may contain any number of functions, and all definitions will
be externally visible when the file is loaded.</li>
<li>Reductions such as <tt class="docutils literal"><span class="pre">sum</span></tt>, <tt class="docutils literal"><span class="pre">prod</span></tt>, and <tt class="docutils literal"><span class="pre">max</span></tt> are performed over
every element of an array when called with a single argument as in
<tt class="docutils literal"><span class="pre">sum(A)</span></tt>.</li>
<li>Functions such as <tt class="docutils literal"><span class="pre">sort</span></tt> that operate column-wise by default
(<tt class="docutils literal"><span class="pre">sort(A)</span></tt> is equivalent to <tt class="docutils literal"><span class="pre">sort(A,1)</span></tt>) do not have special
behavior for 1xN arrays; the argument is returned unmodified since it
still performs <tt class="docutils literal"><span class="pre">sort(A,1)</span></tt>. To sort a 1xN matrix like a vector, use
<tt class="docutils literal"><span class="pre">sort(A,2)</span></tt>.</li>
<li>Parentheses must be used to call a function with zero arguments, as
in <tt class="docutils literal"><span class="pre">tic()</span></tt> and <tt class="docutils literal"><span class="pre">toc()</span></tt>.</li>
<li>Do not use semicolons to end statements. The results of statements are
not automatically printed (except at the interactive prompt), and
lines of code do not need to end with semicolons. The function
<tt class="docutils literal"><span class="pre">println</span></tt> can be used to print a value followed by a newline.</li>
<li>If <tt class="docutils literal"><span class="pre">A</span></tt> and <tt class="docutils literal"><span class="pre">B</span></tt> are arrays, <tt class="docutils literal"><span class="pre">A</span> <span class="pre">==</span> <span class="pre">B</span></tt> doesn&#8217;t return an array of
booleans. Use <tt class="docutils literal"><span class="pre">A</span> <span class="pre">.==</span> <span class="pre">B</span></tt> instead. Likewise for the other boolean
operators, <tt class="docutils literal"><span class="pre">&lt;</span></tt>, <tt class="docutils literal"><span class="pre">&gt;</span></tt>, <tt class="docutils literal"><span class="pre">!=</span></tt>, etc.</li>
<li>The operators <tt class="docutils literal"><span class="pre">&amp;</span></tt>, <tt class="docutils literal"><span class="pre">|</span></tt>, and <tt class="docutils literal"><span class="pre">$</span></tt> perform the bitwise operations and,
or, and xor, respectively, and have precedence similar to Python&#8217;s bitwise
operators (not like C). They can operate on scalars or elementwise
across arrays and can be used to combine logical arrays, but note the
difference in order of operations—parentheses may be required (e.g.,
to select elements of <tt class="docutils literal"><span class="pre">A</span></tt> equal to 1 or 2 use <tt class="docutils literal"><span class="pre">(A</span> <span class="pre">.==</span> <span class="pre">1)</span> <span class="pre">|</span> <span class="pre">(A</span> <span class="pre">.==</span> <span class="pre">2)</span></tt>).</li>
<li>The elements of a collection can be passed as arguments to a function
using <tt class="docutils literal"><span class="pre">...</span></tt>, as in <tt class="docutils literal"><span class="pre">xs=[1,2];</span> <span class="pre">f(xs...)</span></tt>.</li>
<li>Julia&#8217;s <tt class="docutils literal"><span class="pre">svd</span></tt> returns singular values as a vector instead of as a
full diagonal matrix.</li>
<li>In Julia, <tt class="docutils literal"><span class="pre">...</span></tt> is not used to continue lines of code. Instead, incomplete
expressions automatically continue onto the next line.</li>
<li>The variable <tt class="docutils literal"><span class="pre">ans</span></tt> is set to the value of the last expression issued
in an interactive session, but not set when Julia code is run in other
ways.</li>
<li>The closest analog to Julia&#8217;s <tt class="docutils literal"><span class="pre">types</span></tt> are Matlab&#8217;s
<tt class="docutils literal"><span class="pre">classes</span></tt>. Matlab&#8217;s <tt class="docutils literal"><span class="pre">structs</span></tt> behave somewhere between Julia&#8217;s
<tt class="docutils literal"><span class="pre">types</span></tt> and <tt class="docutils literal"><span class="pre">Dicts</span></tt>; in particular, if you need to be able to add
fields to a <tt class="docutils literal"><span class="pre">struct</span></tt> on-the-fly, use a <tt class="docutils literal"><span class="pre">Dict</span></tt> rather than a
<tt class="docutils literal"><span class="pre">type</span></tt>.</li>
</ul>
</div>
<div class="section" id="noteworthy-differences-from-r">
<h2>Noteworthy differences from R<a class="headerlink" href="#noteworthy-differences-from-r" title="Permalink to this headline">¶</a></h2>
<p>One of Julia&#8217;s goals is to provide an effective language for data analysis and statistical programming. For users coming to Julia from R, these are some noteworthy differences:</p>
<ul>
<li><p class="first">Julia uses <tt class="docutils literal"><span class="pre">=</span></tt> for assignment. Julia does not provide any operator like <tt class="docutils literal"><span class="pre">&lt;-</span></tt> or <tt class="docutils literal"><span class="pre">&lt;&lt;-</span></tt>.</p>
</li>
<li><p class="first">Julia constructs vectors using brackets. Julia&#8217;s <tt class="docutils literal"><span class="pre">[1,</span> <span class="pre">2,</span> <span class="pre">3]</span></tt> is the equivalent of R&#8217;s <tt class="docutils literal"><span class="pre">c(1,</span> <span class="pre">2,</span> <span class="pre">3)</span></tt>.</p>
</li>
<li><p class="first">Julia&#8217;s matrix operations are more like traditional mathematical notation than R&#8217;s. If <tt class="docutils literal"><span class="pre">A</span></tt> and <tt class="docutils literal"><span class="pre">B</span></tt> are matrices, then <tt class="docutils literal"><span class="pre">A</span> <span class="pre">*</span> <span class="pre">B</span></tt> defines a matrix multiplication in Julia equivalent to R&#8217;s <tt class="docutils literal"><span class="pre">A</span> <span class="pre">%*%</span> <span class="pre">B</span></tt>. In R, this same notation would perform an elementwise Hadamard product. To get the elementwise multiplication operation, you need to write <tt class="docutils literal"><span class="pre">A</span> <span class="pre">.*</span> <span class="pre">B</span></tt> in Julia.</p>
</li>
<li><p class="first">Julia performs matrix transposition using the <tt class="docutils literal"><span class="pre">'</span></tt> operator. Julia&#8217;s <tt class="docutils literal"><span class="pre">A'</span></tt> is therefore equivalent to R&#8217;s <tt class="docutils literal"><span class="pre">t(A)</span></tt>.</p>
</li>
<li><p class="first">Julia does not require parentheses when writing <tt class="docutils literal"><span class="pre">if</span></tt> statements or <tt class="docutils literal"><span class="pre">for</span></tt> loops: use <tt class="docutils literal"><span class="pre">for</span> <span class="pre">i</span> <span class="pre">in</span> <span class="pre">[1,</span> <span class="pre">2,</span> <span class="pre">3]</span></tt> instead of <tt class="docutils literal"><span class="pre">for</span> <span class="pre">(i</span> <span class="pre">in</span> <span class="pre">c(1,</span> <span class="pre">2,</span> <span class="pre">3))</span></tt> and <tt class="docutils literal"><span class="pre">if</span> <span class="pre">i</span> <span class="pre">==</span> <span class="pre">1</span></tt> instead of <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(i</span> <span class="pre">==</span> <span class="pre">1)</span></tt>.</p>
</li>
<li><p class="first">Julia does not treat the numbers <tt class="docutils literal"><span class="pre">0</span></tt> and <tt class="docutils literal"><span class="pre">1</span></tt> as Booleans. You cannot write <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(1)</span></tt> in Julia, because <tt class="docutils literal"><span class="pre">if</span></tt> statements accept only booleans. Instead, you can write <tt class="docutils literal"><span class="pre">if</span> <span class="pre">true</span></tt>.</p>
</li>
<li><p class="first">Julia does not provide <tt class="docutils literal"><span class="pre">nrow</span></tt> and <tt class="docutils literal"><span class="pre">ncol</span></tt>. Instead, use <tt class="docutils literal"><span class="pre">size(M,</span> <span class="pre">1)</span></tt> for <tt class="docutils literal"><span class="pre">nrow(M)</span></tt> and <tt class="docutils literal"><span class="pre">size(M,</span> <span class="pre">2)</span></tt> for <tt class="docutils literal"><span class="pre">ncol(M)</span></tt>.</p>
</li>
<li><p class="first">Julia&#8217;s SVD is not thinned by default, unlike R. To get results like R&#8217;s, you will often want to call <tt class="docutils literal"><span class="pre">svd(X,</span> <span class="pre">true)</span></tt> on a matrix <tt class="docutils literal"><span class="pre">X</span></tt>.</p>
</li>
<li><p class="first">Julia is careful to distinguish scalars, vectors and matrices. In R, <tt class="docutils literal"><span class="pre">1</span></tt> and <tt class="docutils literal"><span class="pre">c(1)</span></tt> are the same. In Julia, they can not be used interchangeably. One potentially confusing result of this is that <tt class="docutils literal"><span class="pre">x'</span> <span class="pre">*</span> <span class="pre">y</span></tt> for vectors <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> is a 1-element vector, not a scalar. To get a scalar, use <tt class="docutils literal"><span class="pre">dot(x,</span> <span class="pre">y)</span></tt>.</p>
</li>
<li><p class="first">Julia&#8217;s <tt class="docutils literal"><span class="pre">diag()</span></tt> and <tt class="docutils literal"><span class="pre">diagm()</span></tt> are not like R&#8217;s.</p>
</li>
<li><p class="first">Julia cannot assign to the results of function calls on the left-hand of an assignment operation: you cannot write <tt class="docutils literal"><span class="pre">diag(M)</span> <span class="pre">=</span> <span class="pre">ones(n)</span></tt>.</p>
</li>
<li><p class="first">Julia discourages populating the main namespace with functions. Most statistical
functionality for Julia is found in <a class="reference external" href="http://pkg.julialang.org/">packages</a> like the
DataFrames and Distributions packages:</p>
<blockquote>
<div><ul class="simple">
<li>Distributions functions are found in the <a class="reference external" href="https://github.com/JuliaStats/Distributions.jl">Distributions package</a>.</li>
<li>The <a class="reference external" href="https://github.com/JuliaStats/DataFrames.jl">DataFrames package</a> provides data frames.</li>
<li>Generalized linear models are provided by the <a class="reference external" href="https://github.com/JuliaStats/GLM.jl">GLM package</a>.</li>
</ul>
</div></blockquote>
</li>
<li><p class="first">Julia provides tuples and real hash tables, but not R&#8217;s lists. When returning multiple items, you should typically use a tuple: instead of <tt class="docutils literal"><span class="pre">list(a</span> <span class="pre">=</span> <span class="pre">1,</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">2)</span></tt>, use <tt class="docutils literal"><span class="pre">(1,</span> <span class="pre">2)</span></tt>.</p>
</li>
<li><p class="first">Julia encourages all users to write their own types. Julia&#8217;s types are much easier to use than S3 or S4 objects in R. Julia&#8217;s multiple dispatch system means that <tt class="docutils literal"><span class="pre">table(x::TypeA)</span></tt> and <tt class="docutils literal"><span class="pre">table(x::TypeB)</span></tt> act like R&#8217;s <tt class="docutils literal"><span class="pre">table.TypeA(x)</span></tt> and <tt class="docutils literal"><span class="pre">table.TypeB(x)</span></tt>.</p>
</li>
<li><p class="first">In Julia, values are passed and assigned by reference. If a function modifies an array, the changes will be visible in the caller. This is very different from R and allows new functions to operate on large data structures much more efficiently.</p>
</li>
<li><p class="first">Concatenation of vectors and matrices is done using <tt class="docutils literal"><span class="pre">hcat</span></tt> and <tt class="docutils literal"><span class="pre">vcat</span></tt>, not <tt class="docutils literal"><span class="pre">c</span></tt>, <tt class="docutils literal"><span class="pre">rbind</span></tt> and <tt class="docutils literal"><span class="pre">cbind</span></tt>.</p>
</li>
<li><p class="first">A Julia range object like <tt class="docutils literal"><span class="pre">a:b</span></tt> is not shorthand for a vector like in R, but is a specialized type of object that is used for iteration without high memory overhead. To convert a range into a vector, you need to wrap the range with brackets <tt class="docutils literal"><span class="pre">[a:b]</span></tt>.</p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre">max</span></tt>, <tt class="docutils literal"><span class="pre">min</span></tt> are the equivalent of <tt class="docutils literal"><span class="pre">pmax</span></tt> and <tt class="docutils literal"><span class="pre">pmin</span></tt> in R, but both arguments need to have the same dimensions.  While <tt class="docutils literal"><span class="pre">maximum</span></tt>, <tt class="docutils literal"><span class="pre">minimum</span></tt> replace <tt class="docutils literal"><span class="pre">max</span></tt> and <tt class="docutils literal"><span class="pre">min</span></tt> in R, there are important differences.</p>
</li>
<li><p class="first">The functions <tt class="docutils literal"><span class="pre">sum</span></tt>, <tt class="docutils literal"><span class="pre">prod</span></tt>, <tt class="docutils literal"><span class="pre">maximum</span></tt>, <tt class="docutils literal"><span class="pre">minimum</span></tt> are different from their counterparts in R. They all accept one or two arguments. The first argument is an iterable collection such as an array.  If there is a second argument, then this argument indicates the dimensions, over which the operation is carried out.  For instance, let <tt class="docutils literal"><span class="pre">A=[[1</span> <span class="pre">2],[3</span> <span class="pre">4]]</span></tt> in Julia and <tt class="docutils literal"><span class="pre">B=rbind(c(1,2),c(3,4))</span></tt> be the same matrix in R.  Then <tt class="docutils literal"><span class="pre">sum(A)</span></tt> gives the same result as <tt class="docutils literal"><span class="pre">sum(B)</span></tt>, but <tt class="docutils literal"><span class="pre">sum(A,1)</span></tt> is a row vector containing the sum over each column and <tt class="docutils literal"><span class="pre">sum(A,2)</span></tt> is a column vector containing the sum over each row.  This contrasts to the behavior of R, where <tt class="docutils literal"><span class="pre">sum(B,1)=11</span></tt> and <tt class="docutils literal"><span class="pre">sum(B,2)=12</span></tt>.  If the second argument is a vector, then it specifies all the dimensions over which the sum is performed, e.g., <tt class="docutils literal"><span class="pre">sum(A,[1,2])=10</span></tt>.  It should be noted that there is no error checking regarding the second argument.</p>
</li>
<li><p class="first">Julia has several functions that can mutate their arguments. For example, it has <tt class="docutils literal"><span class="pre">sort(v)</span></tt> and <tt class="docutils literal"><span class="pre">sort!(v)</span></tt>.</p>
</li>
<li><p class="first"><tt class="docutils literal"><span class="pre">colMeans()</span></tt> and <tt class="docutils literal"><span class="pre">rowMeans()</span></tt>, <tt class="docutils literal"><span class="pre">size(m,</span> <span class="pre">1)</span></tt> and <tt class="docutils literal"><span class="pre">size(m,</span> <span class="pre">2)</span></tt></p>
</li>
<li><p class="first">In R, performance requires vectorization. In Julia, almost the opposite is true: the best performing code is often achieved by using devectorized loops.</p>
</li>
<li><p class="first">Unlike R, there is no delayed evaluation in Julia. For most users, this means that there are very few unquoted expressions or column names.</p>
</li>
<li><p class="first">Julia does not support the <tt class="docutils literal"><span class="pre">NULL</span></tt> type.</p>
</li>
<li><p class="first">There is no equivalent of R&#8217;s <tt class="docutils literal"><span class="pre">assign</span></tt> or <tt class="docutils literal"><span class="pre">get</span></tt> in Julia.</p>
</li>
</ul>
</div>
<div class="section" id="noteworthy-differences-from-python">
<h2>Noteworthy differences from Python<a class="headerlink" href="#noteworthy-differences-from-python" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Indexing of arrays, strings, etc. in Julia is 1-based not 0-based.</li>
<li>The last element of a list or array is indexed with <tt class="docutils literal"><span class="pre">end</span></tt> in Julia,
not -1 as in Python.</li>
<li>Comprehensions in Julia do not (yet) have the optional if clause found
in Python.</li>
<li>For, if, while, etc. blocks in Julia are terminated by <tt class="docutils literal"><span class="pre">end</span></tt>;
indentation is not significant.</li>
<li>Julia has no line continuation syntax: if, at the end of a line, the
input so far is a complete expression, it is considered done;
otherwise the input continues. One way to force an expression
to continue is to wrap it in parentheses.</li>
<li>Julia arrays are column-major (Fortran ordered) whereas <cite>numpy</cite> arrays
are row-major (C-ordered) by default. To get optimal performance when
looping over arrays, the order of the loops should be reversed in
Julia relative to <cite>numpy</cite> (see relevant section of
<a class="reference internal" href="performance-tips.html#man-performance-tips"><em>Performance Tips</em></a>).</li>
</ul>
</div>
</div>


          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="../stdlib/base.html" class="btn btn-neutral float-right" title="The Standard Library"/>Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="faq.html" class="btn btn-neutral" title="Frequently Asked Questions"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
    </p>
  </div>

  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
</footer>
        </div>
      </div>

    </section>

  </div>
  

  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'0.3.4',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>
      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
   

</body>
</html>