Þ ¥bonds€¬cell_results†Ù$cce97156-3292-4d75-ae6b-3cee986cdf98Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ±<div class="markdown"><pre><code class="language-julia">macro pure&#40;ex&#41;
    return esc&#40;:&#40;Base.@assume_effects :foldable &#36;ex&#41;&#41;
end
</code></pre>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÙÃL@^ƒÇ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$cce97156-3292-4d75-ae6b-3cee986cdf98¹depends_on_disabled_cellsÂ§runtimeÎ 	!�µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28Š¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÙÃL@.¡¶°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28¹depends_on_disabled_cellsÂ§runtimeÎ �ýµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$674ecc1c-5999-4327-b087-4b553d98b5d9Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ¦<div class="markdown"><pre><code class="language-julia">map&#40;f, A::AbstractArray&#41; &#61; collect_similar&#40;A, Generator&#40;f,A&#41;&#41;
</code></pre>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÙÃL@]àÖ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$674ecc1c-5999-4327-b087-4b553d98b5d9¹depends_on_disabled_cellsÂ§runtimeÎE¯+µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$77423e98-b580-11ec-3aaa-131342d1510dŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙƒ<div class="markdown"><h1>A better <code>@less</code> inside notebooks</h1>
<p>Copy the following cell in your notebook:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÙÃL=¤Íæ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$77423e98-b580-11ec-3aaa-131342d1510d¹depends_on_disabled_cellsÂ§runtimeÎ ¾Oµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$baf98a10-a541-4f67-ac50-60dbf95f9927Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚl<div class="markdown"><pre><code class="language-julia">first&#40;r::OrdinalRange&#123;T&#125;&#41; where &#123;T&#125; &#61; convert&#40;T, r.start&#41;
first&#40;r::OneTo&#123;T&#125;&#41; where &#123;T&#125; &#61; oneunit&#40;T&#41;
first&#40;r::StepRangeLen&#41; &#61; unsafe_getindex&#40;r, 1&#41;
first&#40;r::LinRange&#41; &#61; r.start
</code></pre>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÙÃL@\ºo°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$baf98a10-a541-4f67-ac50-60dbf95f9927¹depends_on_disabled_cellsÂ§runtimeÎ ¢"´µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$269d092d-0114-445f-8e0c-0a85ef4b5dbeŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÊ<div class="markdown"><p>You can then use the <code>@less</code> macro to get function definitions:</p>
<pre><code class="language-julia">@less any_function&#40;&#41;</code></pre>
<p>Example:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÙÃL=¦’£°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$269d092d-0114-445f-8e0c-0a85ef4b5dbe¹depends_on_disabled_cellsÂ§runtimeÎ Ðåµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂ±cell_dependencies†Ù$cce97156-3292-4d75-ae6b-3cee986cdf98„´precedence_heuristic	§cell_idÙ$cce97156-3292-4d75-ae6b-3cee986cdf98´downstream_cells_map€²upstream_cells_map…¤Base�ªBase.@pure�°InteractiveUtils�¥@less�µInteractiveUtils.less‘Ù$d1928a6f-c564-4ace-a1e0-7789d6f65e28Ù$d1928a6f-c564-4ace-a1e0-7789d6f65e28„´precedence_heuristic	§cell_idÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28´downstream_cells_map�µInteractiveUtils.less“Ù$baf98a10-a541-4f67-ac50-60dbf95f9927Ù$674ecc1c-5999-4327-b087-4b553d98b5d9Ù$cce97156-3292-4d75-ae6b-3cee986cdf98²upstream_cells_mapÞ ¥split�©findfirst�¡:�®AbstractString�­Markdown.Code�¦String�£end�§Integer�¥begin�¨endswith�¤join�¤Text�°InteractiveUtils�«Markdown.MD�¨Markdown�¢==�¤read�Ù$674ecc1c-5999-4327-b087-4b553d98b5d9„´precedence_heuristic	§cell_idÙ$674ecc1c-5999-4327-b087-4b553d98b5d9´downstream_cells_map€²upstream_cells_map…£map�°InteractiveUtils�¤sqrt�¥@less�µInteractiveUtils.less‘Ù$d1928a6f-c564-4ace-a1e0-7789d6f65e28Ù$77423e98-b580-11ec-3aaa-131342d1510d„´precedence_heuristic	§cell_idÙ$77423e98-b580-11ec-3aaa-131342d1510d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$baf98a10-a541-4f67-ac50-60dbf95f9927„´precedence_heuristic	§cell_idÙ$baf98a10-a541-4f67-ac50-60dbf95f9927´downstream_cells_map€²upstream_cells_map…¡:�°InteractiveUtils�¥first�¥@less�µInteractiveUtils.less‘Ù$d1928a6f-c564-4ace-a1e0-7789d6f65e28Ù$269d092d-0114-445f-8e0c-0a85ef4b5dbe„´precedence_heuristic	§cell_idÙ$269d092d-0114-445f-8e0c-0a85ef4b5dbe´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�´cell_execution_order–Ù$77423e98-b580-11ec-3aaa-131342d1510dÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28Ù$269d092d-0114-445f-8e0c-0a85ef4b5dbeÙ$baf98a10-a541-4f67-ac50-60dbf95f9927Ù$674ecc1c-5999-4327-b087-4b553d98b5d9Ù$cce97156-3292-4d75-ae6b-3cee986cdf98´last_hot_reload_timeË        ©shortpath§less.jl®process_status¥ready¤pathÙ-/home/runner/work/Notebooks/Notebooks/less.jl­pluto_version¨v0.19.47®last_save_timeËAÙÃL=£Ù+ªcell_order–Ù$77423e98-b580-11ec-3aaa-131342d1510dÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28Ù$269d092d-0114-445f-8e0c-0a85ef4b5dbeÙ$baf98a10-a541-4f67-ac50-60dbf95f9927Ù$674ecc1c-5999-4327-b087-4b553d98b5d9Ù$cce97156-3292-4d75-ae6b-3cee986cdf98±published_objects€¥nbpkgŠ¯install_time_nsÏ   ÊñAZ¬instantiatedÃ²installed_versions€°terminal_outputs�ªnbpkg_syncÚ@
[0m[1mInstantiating...[22m
[90m===[39m

[0m[1mResolving...[22m
[90m===[39m
[32m[1m  No Changes[22m[39m to `/tmp/jl_AnnxKJ/Project.toml`
[32m[1m  No Changes[22m[39m to `/tmp/jl_AnnxKJ/Manifest.toml`

[0m[1mPrecompiling...[22m
[90m===[39m
[32m[1m  Activating[22m[39m project at `/tmp/jl_AnnxKJ`§enabledÃ·restart_recommended_msgÀ´restart_required_msgÀ­busy_packages�¶waiting_for_permissionÂÙ,waiting_for_permission_but_probably_disabledÂ«cell_inputs†Ù$cce97156-3292-4d75-ae6b-3cee986cdf98„§cell_idÙ$cce97156-3292-4d75-ae6b-3cee986cdf98¤code¹@less Base.@pure identity¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28„§cell_idÙ$d1928a6f-c564-4ace-a1e0-7789d6f65e28¤codeÚLfunction InteractiveUtils.less(file::AbstractString, line::Integer)
	content = read(file, String)

	lines = split(content, '\n')[line:end]
	if endswith(file, ".jl")
	
		final_idx = findfirst(==(""), lines)
		def = join(lines[begin:final_idx], '\n')
		Markdown.MD(Markdown.Code("julia", def))
	else
		Text(join(lines, '\n'))
	end
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$674ecc1c-5999-4327-b087-4b553d98b5d9„§cell_idÙ$674ecc1c-5999-4327-b087-4b553d98b5d9¤code¸@less map(sqrt, [1,2,3])¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$77423e98-b580-11ec-3aaa-131342d1510d„§cell_idÙ$77423e98-b580-11ec-3aaa-131342d1510d¤codeÙXmd"""
# A better `@less` inside notebooks

Copy the following cell in your notebook:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$baf98a10-a541-4f67-ac50-60dbf95f9927„§cell_idÙ$baf98a10-a541-4f67-ac50-60dbf95f9927¤code±@less first(1:10)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$269d092d-0114-445f-8e0c-0a85ef4b5dbe„§cell_idÙ$269d092d-0114-445f-8e0c-0a85ef4b5dbe¤codeÙvmd"""
You can then use the `@less` macro to get function definitions:

```julia
@less any_function()
```

Example:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃ«notebook_idÙ$672c54a6-8a3c-11ef-213b-2f8801bb8f55«in_temp_dirÂ¨metadata€