{"action":"created","comment":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/29853642","id":29853642,"diff_hunk":"@@ -0,0 +1,522 @@\n+****************\n+More about types\n+****************\n+\n+.. currentmodule:: Base\n+\n+If you've used Julia for a while, you understand the fundamental role\n+that types play.  Here we try to get under the hood, focusing\n+particularly on :ref:`parametric types <man-parametric-types>`.\n+\n+Types and sets (and ``Any`` and ``Union()``/``Bottom``)\n+-------------------------------------------------------\n+\n+It's perhaps easiest to conceive of Julia's type system in terms of\n+sets.  A concerete type corresponds to a single entity in the space of\n+all possible types; an abstract type refers to a collection (set) of\n+concrete types.  ``Any`` is a type that describes the entire universe\n+of possible types; ``Integer`` is a subset of ``Any`` that includes\n+``Int``, ``Int8``, and other concrete types.  Internally, julia also\n+makes heavy use of another type known as ``Bottom``, or equivalently,\n+``Union()``.  This corresponds to the empty set.\n+\n+Julia's types support the standard operations of set theory: you can\n+ask whether ``T1`` is a \"subset\" (subtype) of ``T2`` with ``T1 <:\n+T2``.  Likewise, you intersect two types using ``typeintersect`` and\n+take their union with ``typejoin``::\n+\n+    julia> typeintersect(Int,Float64)\n+    Union()\n+\n+    julia> typejoin(Int,Float64)\n+    Real\n+\n+    julia> typeintersect(Signed, Union(UInt8, Int8))\n+    Int8\n+\n+    julia> typejoin(Signed, Union(UInt8, Int8))\n+    Integer\n+\n+    julia> typeintersect(Tuple{Integer,Float64}, Tuple{Int,Real})\n+    Tuple{Int64,Float64}\n+\n+    julia> typejoin(Tuple{Integer,Float64}, Tuple{Int,Real})\n+    Tuple{Integer,Real}\n+\n+While these operations may seem abstract, they lie at the heart of\n+julia.  For example, method dispatch is implemented by stepping\n+through the items in a method list until reaching one for which\n+``typeintersect(args, sig)`` is not ``Union()``.  (Here, ``args`` is a\n+tuple-type describing the types of the arguments, and ``sig`` is a\n+tuple-type specifying the types in the function's signature.)  For\n+this algorithm to work, it's important that methods be sorted by their\n+specificity, and that the search begins with the most specific\n+methods.  Consequently, julia also implements a partial order on\n+types; this is achieved by functionality that is similar to ``<:``,\n+but with differences that will be discussed below.\n+\n+TypeVars\n+--------\n+\n+Many types take parameters; an easy example is ``Array``, which takes\n+two parameters often written as ``Array{T,N}``.  Let's compare the\n+following methods::\n+\n+   f1(A::Array) = 1\n+   f2(A::Array{Int}) = 2\n+   f3{T}(A::Array{T}) = 3\n+   f4(A::Array{Any}) = 4\n+   f5{T<:Any}(A::Array{T}) = 5\n+\n+All but ``f4`` can be called with ``a = [1,2]``; all but ``f2`` can be\n+called with ``b = Any[1,2]``.\n+\n+Let's look at these types a little more closely::\n+\n+   julia> Array\n+   Array{T,N}\n+\n+   julia> xdump(Array)\n+   Array{T,N}::DataType  <: DenseArray{T,N}\n+\n+This indicates that ``Array`` is a shorthand for ``Array{T,N}``.  If\n+you type this at the REPL prompt---on its own, not while defining\n+a function or type---you get an error ``T not defined``. So what,\n+exactly, are ``T`` and ``N``? You can learn more by extracting these\n+parameters::\n+\n+   julia> T,N = Array.parameters\n+   svec(T,N)\n+\n+   julia> xdump(T)\n+   TypeVar\n+     name: Symbol T\n+     lb: Union()\n+     ub: Any::DataType  <: Any\n+     bound: Bool false\n+\n+A ``TypeVar`` is one of Julia's built-in types---it's defined in\n+``jltypes.c``, although you can find a commented-out version in\n+``boot.jl``.  The ``name`` field is straightforward: it's what's\n+printed when showing the object.  ``lb`` and ``ub`` stand for \"lower\n+bound\" and \"upper bound,\" respectively: these are the sets that\n+constrain what types the TypeVar may represent.  In this case, ``T``'s\n+lower bound is ``Union()`` (i.e., ``Bottom`` or the empty set); in\n+other words, this ``TypeVar`` is not constrained from below.  The\n+upper bound is ``Any``, so neither is it constrained from above.\n+\n+In a method definition like\n+::\n+\n+   g{S<:Integer}(x::S) = 0\n+\n+one can extract the underlying ``TypeVar``::\n+\n+   m = start(methods(g))\n+   p = m.sig.parameters\n+   tv = p[1]\n+   julia> xdump(tv)\n+   TypeVar\n+     name: Symbol S\n+     lb: Union()\n+     ub: Integer::DataType  <: Real\n+     bound: Bool true\n+\n+Here ``ub`` is ``Integer``, as specified in the function definition.\n+\n+The last field of a ``TypeVar`` is ``bound``.  This boolean value\n+specifies whether the ``TypeVar`` is defined as one of the function\n+parameters.  For example::\n+\n+   julia> h1(A::Array, b::Real) = 1\n+   h1 (generic function with 1 method)\n+\n+   julia> h2{T<:Real}(A::Array, b::T) = 1\n+   h2 (generic function with 1 method)\n+\n+   julia> h3{T<:Real}(A::Array{T}, b::T) = 1\n+   h3 (generic function with 1 method)\n+\n+   julia> p1 = start(methods(h1)).sig.parameters\n+   svec(Array{T,N},Real)\n+\n+   julia> p2 = start(methods(h2)).sig.parameters\n+   svec(Array{T,N},T<:Real)\n+\n+   julia> p3 = start(methods(h3)).sig.parameters\n+   svec(Array{T<:Real,N},T<:Real)\n+\n+   julia> xdump(p1[1].parameters[1])\n+   TypeVar\n+     name: Symbol T\n+     lb: Union()\n+     ub: Any::DataType  <: Any\n+     bound: Bool false\n+\n+   julia> xdump(p3[1].parameters[1])\n+   TypeVar\n+     name: Symbol T\n+     lb: Union()\n+     ub: Real::DataType  <: Number\n+     bound: Bool true\n+\n+Note that ``p2`` shows two objects called ``T``, but only one of them\n+has the upper bound ``Real``; in contrast, ``p3`` shows both of them\n+bounded.  This is because in ``h3``, the same type ``T`` is used in\n+both places, whereas for ``h2`` the ``T`` inside the array is simply\n+the default symbol used for the first parameter of ``Array``.\n+\n+One can construct ``TypeVar``\\s manually::\n+\n+   julia> TypeVar(:V, Signed, Real, false)\n+   Signed<:V<:Real\n+\n+There are convenience versions that allow you to omit any of these\n+arguments except the ``name`` symbol.\n+\n+Armed with this information, we can do some sneaky things that reveal\n+a lot about how julia does dispatch::\n+\n+   julia> TV = TypeVar(:T, false)   # bound = false\n+   T\n+\n+   julia> candid{T}(A::Array{T}, x::T) = 0\n+   candid (generic function with 1 method)\n+\n+   julia> @eval sneaky{T}(A::Array{T}, x::$TV) = 1\n+   sneaky (generic function with 1 method)\n+\n+   julia> methods(candid)\n+   # 1 method for generic function \"candid\":\n+   candid{T}(A::Array{T,N},x::T) at none:1\n+\n+   julia> methods(sneaky)\n+   # 1 method for generic function \"sneaky\":\n+   sneaky{T}(A::Array{T,N},x::T) at none:2\n+\n+These therefore print identically, but they have very different behavior::\n+\n+   julia> candid([1],3.2)\n+   ERROR: MethodError: `candid` has no method matching candid(::Array{Int64,1}, ::Float64)\n+   Closest candidates are:\n+     candid{T}(::Array{T,N}, ::T)\n+\n+   julia> sneaky([1],3.2)\n+   1\n+\n+To see what's happening, it's helpful to use julia's internal ``jl_``\n+function (defined in ``builtins.c``) for display, because it prints\n+bound ``TypeVar`` objects with a hash (``#T`` instead of ``T``)::\n+\n+   julia> jl_(x) = ccall(:jl_, Void, (Any,), x)\n+   jl_ (generic function with 1 method)\n+\n+   julia> jl_(start(methods(candid)))\n+   Method(sig=Tuple{Array{#T<:Any, N<:Any}, #T<:Any}, va=false, isstaged=false, tvars=#T<:Any, func=#<function>, invokes=nothing, next=nothing)","path":"doc/devdocs/types.rst","position":215,"original_position":215,"commit_id":"61d5a086dfe7246b3e5702857f2f453aa3d7bbd0","original_commit_id":"61d5a086dfe7246b3e5702857f2f453aa3d7bbd0","user":{"login":"timholy","id":1525481,"avatar_url":"https://avatars.githubusercontent.com/u/1525481?v=3","gravatar_id":"","url":"https://api.github.com/users/timholy","html_url":"https://github.com/timholy","followers_url":"https://api.github.com/users/timholy/followers","following_url":"https://api.github.com/users/timholy/following{/other_user}","gists_url":"https://api.github.com/users/timholy/gists{/gist_id}","starred_url":"https://api.github.com/users/timholy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timholy/subscriptions","organizations_url":"https://api.github.com/users/timholy/orgs","repos_url":"https://api.github.com/users/timholy/repos","events_url":"https://api.github.com/users/timholy/events{/privacy}","received_events_url":"https://api.github.com/users/timholy/received_events","type":"User","site_admin":false},"body":"Does anyone know how to prevent these `#` from being interpreted as comment-characters?","created_at":"2015-05-07T13:57:14Z","updated_at":"2015-05-07T13:57:14Z","html_url":"https://github.com/JuliaLang/julia/pull/11185#discussion_r29853642","pull_request_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11185","_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/29853642"},"html":{"href":"https://github.com/JuliaLang/julia/pull/11185#discussion_r29853642"},"pull_request":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11185"}}},"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/11185","id":34917738,"html_url":"https://github.com/JuliaLang/julia/pull/11185","diff_url":"https://github.com/JuliaLang/julia/pull/11185.diff","patch_url":"https://github.com/JuliaLang/julia/pull/11185.patch","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/11185","number":11185,"state":"open","locked":false,"title":"Add devdocs on types","user":{"login":"timholy","id":1525481,"avatar_url":"https://avatars.githubusercontent.com/u/1525481?v=3","gravatar_id":"","url":"https://api.github.com/users/timholy","html_url":"https://github.com/timholy","followers_url":"https://api.github.com/users/timholy/followers","following_url":"https://api.github.com/users/timholy/following{/other_user}","gists_url":"https://api.github.com/users/timholy/gists{/gist_id}","starred_url":"https://api.github.com/users/timholy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timholy/subscriptions","organizations_url":"https://api.github.com/users/timholy/orgs","repos_url":"https://api.github.com/users/timholy/repos","events_url":"https://api.github.com/users/timholy/events{/privacy}","received_events_url":"https://api.github.com/users/timholy/received_events","type":"User","site_admin":false},"body":"Inspired by trying to get a better handle on how types are handled internally (in the course of working on #10911).\r\n\r\n@yuyichao, these are the promised docs on TypeVars and related topics.\r\n","created_at":"2015-05-07T13:56:28Z","updated_at":"2015-05-07T13:57:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0828e2cdce3d3c86b3573de2816517650b0b03b1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11185/commits","review_comments_url":"https://api.github.com/repos/JuliaLang/julia/pulls/11185/comments","review_comment_url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/11185/comments","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/61d5a086dfe7246b3e5702857f2f453aa3d7bbd0","head":{"label":"JuliaLang:teh/devdoc_types","ref":"teh/devdoc_types","sha":"61d5a086dfe7246b3e5702857f2f453aa3d7bbd0","user":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"repo":{"id":1644196,"name":"julia","full_name":"JuliaLang/julia","owner":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JuliaLang/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":false,"url":"https://api.github.com/repos/JuliaLang/julia","forks_url":"https://api.github.com/repos/JuliaLang/julia/forks","keys_url":"https://api.github.com/repos/JuliaLang/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JuliaLang/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JuliaLang/julia/teams","hooks_url":"https://api.github.com/repos/JuliaLang/julia/hooks","issue_events_url":"https://api.github.com/repos/JuliaLang/julia/issues/events{/number}","events_url":"https://api.github.com/repos/JuliaLang/julia/events","assignees_url":"https://api.github.com/repos/JuliaLang/julia/assignees{/user}","branches_url":"https://api.github.com/repos/JuliaLang/julia/branches{/branch}","tags_url":"https://api.github.com/repos/JuliaLang/julia/tags","blobs_url":"https://api.github.com/repos/JuliaLang/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JuliaLang/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JuliaLang/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/JuliaLang/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/JuliaLang/julia/languages","stargazers_url":"https://api.github.com/repos/JuliaLang/julia/stargazers","contributors_url":"https://api.github.com/repos/JuliaLang/julia/contributors","subscribers_url":"https://api.github.com/repos/JuliaLang/julia/subscribers","subscription_url":"https://api.github.com/repos/JuliaLang/julia/subscription","commits_url":"https://api.github.com/repos/JuliaLang/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/JuliaLang/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/JuliaLang/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/JuliaLang/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/JuliaLang/julia/contents/{+path}","compare_url":"https://api.github.com/repos/JuliaLang/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JuliaLang/julia/merges","archive_url":"https://api.github.com/repos/JuliaLang/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JuliaLang/julia/downloads","issues_url":"https://api.github.com/repos/JuliaLang/julia/issues{/number}","pulls_url":"https://api.github.com/repos/JuliaLang/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/JuliaLang/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/JuliaLang/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JuliaLang/julia/labels{/name}","releases_url":"https://api.github.com/repos/JuliaLang/julia/releases{/id}","created_at":"2011-04-21T07:01:50Z","updated_at":"2015-05-07T13:51:56Z","pushed_at":"2015-05-07T13:56:29Z","git_url":"git://github.com/JuliaLang/julia.git","ssh_url":"git@github.com:JuliaLang/julia.git","clone_url":"https://github.com/JuliaLang/julia.git","svn_url":"https://github.com/JuliaLang/julia","homepage":"http://julialang.org/","size":204784,"stargazers_count":5453,"watchers_count":5453,"language":"Julia","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1148,"mirror_url":null,"open_issues_count":1266,"forks":1148,"open_issues":1266,"watchers":5453,"default_branch":"master"}},"base":{"label":"JuliaLang:master","ref":"master","sha":"0aa5cd30dc1fff436cc6354100c88a121b00e006","user":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"repo":{"id":1644196,"name":"julia","full_name":"JuliaLang/julia","owner":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JuliaLang/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":false,"url":"https://api.github.com/repos/JuliaLang/julia","forks_url":"https://api.github.com/repos/JuliaLang/julia/forks","keys_url":"https://api.github.com/repos/JuliaLang/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JuliaLang/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JuliaLang/julia/teams","hooks_url":"https://api.github.com/repos/JuliaLang/julia/hooks","issue_events_url":"https://api.github.com/repos/JuliaLang/julia/issues/events{/number}","events_url":"https://api.github.com/repos/JuliaLang/julia/events","assignees_url":"https://api.github.com/repos/JuliaLang/julia/assignees{/user}","branches_url":"https://api.github.com/repos/JuliaLang/julia/branches{/branch}","tags_url":"https://api.github.com/repos/JuliaLang/julia/tags","blobs_url":"https://api.github.com/repos/JuliaLang/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JuliaLang/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JuliaLang/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/JuliaLang/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/JuliaLang/julia/languages","stargazers_url":"https://api.github.com/repos/JuliaLang/julia/stargazers","contributors_url":"https://api.github.com/repos/JuliaLang/julia/contributors","subscribers_url":"https://api.github.com/repos/JuliaLang/julia/subscribers","subscription_url":"https://api.github.com/repos/JuliaLang/julia/subscription","commits_url":"https://api.github.com/repos/JuliaLang/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/JuliaLang/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/JuliaLang/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/JuliaLang/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/JuliaLang/julia/contents/{+path}","compare_url":"https://api.github.com/repos/JuliaLang/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JuliaLang/julia/merges","archive_url":"https://api.github.com/repos/JuliaLang/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JuliaLang/julia/downloads","issues_url":"https://api.github.com/repos/JuliaLang/julia/issues{/number}","pulls_url":"https://api.github.com/repos/JuliaLang/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/JuliaLang/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/JuliaLang/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JuliaLang/julia/labels{/name}","releases_url":"https://api.github.com/repos/JuliaLang/julia/releases{/id}","created_at":"2011-04-21T07:01:50Z","updated_at":"2015-05-07T13:51:56Z","pushed_at":"2015-05-07T13:56:29Z","git_url":"git://github.com/JuliaLang/julia.git","ssh_url":"git@github.com:JuliaLang/julia.git","clone_url":"https://github.com/JuliaLang/julia.git","svn_url":"https://github.com/JuliaLang/julia","homepage":"http://julialang.org/","size":204784,"stargazers_count":5453,"watchers_count":5453,"language":"Julia","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1148,"mirror_url":null,"open_issues_count":1266,"forks":1148,"open_issues":1266,"watchers":5453,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11185"},"html":{"href":"https://github.com/JuliaLang/julia/pull/11185"},"issue":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/11185"},"comments":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/11185/comments"},"review_comments":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11185/comments"},"review_comment":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/11185/commits"},"statuses":{"href":"https://api.github.com/repos/JuliaLang/julia/statuses/61d5a086dfe7246b3e5702857f2f453aa3d7bbd0"}}}}