为什么@view 在 view() 前面加了个 `true &&`

我想参考LoopVectorization.jl中的@avx宏为自己的module提供多线程broadcast的宏支持
然后发现@view 除了转换end以外, 还 view() 前面加了个 true &&.
@avx的实现并不支持这种情况. 但对于一般的并行broadcast, 在表达式中出现@view还是比较常见的,比如:

@. a = b + @view c

我目前想到的办法是在用 Meta.lower() 生成 IR 前先把所有 Expr(:&&) 节点替换成一般的 view

但我还是想知道设计成这样的原因。

已解决,为了避免对view函数错误重定义,未来可能改成等效的let;view(…);end

京ICP备17009874号-2