Size: a a a

Язык программирования Julia / Julia programming language

2020 December 06

RS

Roman Samarev in Язык программирования Julia / Julia programming language
julia> ([Set([1,2]), Set([3,4])] .|> x-> filter(!=(2), x)) |> length
2
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Да, к сожалению .|> неочевидно себя ведёт. Лучше анонимные функции после этого пайпа в скобки оборачивать

[Set([1,2]), Set([3,4])] .|> (x-> filter(!=(2), x)) |> length
источник

P

PS in Язык программирования Julia / Julia programming language
вот это поворот
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
Да, к сожалению .|> неочевидно себя ведёт. Лучше анонимные функции после этого пайпа в скобки оборачивать

[Set([1,2]), Set([3,4])] .|> (x-> filter(!=(2), x)) |> length
Приритет .|> выше, чем у -> ?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Если пишется не функция, а полноценная анонимная функция, то чтобы таких проблем не было, лучше броадкастинг на неё переносить.

[Set([1, 2]), Set([3, 4]) |> x -> filter.(!=(2), x) |> length
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Увы. Точнее такая конструкция

data .|> x -> <some commands>

интерпретируется как
x -> some_commands.(data)


То есть все следующие пайпы относятся к определению анонимной функции, а не исходной внешней функции.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Что наверное логично, с какой-то точки зрения.
источник

P

PS in Язык программирования Julia / Julia programming language
Спасибо всем. Сегодня много времени потратил, чтобы понять, что вообще происходит, и сочинить этот minimal example :(
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть исходная конструкция была эквивалентна
f(x) = length(filter(!=(2), x))
f.([Set([1, 2]), Set([3, 4])])
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
На самом деле это крутое свойство, потому что можно устраивать броадкаст произвольной глубины.

x .|> f1 .|> f2 .|> f3

применит функцию на 3 уровне вложенности.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Точнее вот так

x = [[["foo", "bar"], ["faz", "baz"]], [["xx", "yy"], ["zzzz", "zzzzz"]]]

julia> x .|> x -> x .|> x -> x .|> length
2-element Vector{Vector{Vector{Int64}}}:
[[3, 3], [3, 3]]
[[2, 2], [4, 5]]
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Хотя конечно такая конструкция может мозг взорвать неподготовленному человеку, так что лучше наверное её всё-таки не использовать 😊))
источник

K

Kasatka❌ in Язык программирования Julia / Julia programming language
она в первую очередь взорвет мозг автору, который через неделю забудет приоритет операторов
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну, если постоянно это делать, то конечно не забудешь, но все равно так делать не стоит.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
В zulip потрясающее написали



using REPL
function Base.display(d::REPL.REPLDisplay, x::Base.Callable)
   current = x
   while true
       printstyled("> ", color=:green)
       new = Meta.parse(readline())
       if new isa Symbol && isdefined(Main, new)
           new = getfield(Main, new)
           if new isa Base.Callable
               current = current ∘ new
           else
               return display(d, current(Main.eval(new)...))
           end
       else
           return display(d, current(Main.eval(new)...))
       end
   end
end
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
И результат
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
julia> f(x,y) = x+y;

julia> f
> 2,3
5

julia> sin
> cos
> sinh
> cosh
> f
> 2,3
0.8261371586466233
источник

A

ABC in Язык программирования Julia / Julia programming language
Hello guys
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Вряд ли это когда-нибудь кому-нибудь понадобится, но выглядит прикольно.
источник

A

ABC in Язык программирования Julia / Julia programming language
Can anyone help me?
источник