Enviar búsqueda
Cargar
COSCUP: Metaprogramming in Julia
•
0 recomendaciones
•
385 vistas
岳華 杜
Seguir
20180811 COSCUP Speaker: Iblis Lin
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 52
Descargar ahora
Descargar para leer sin conexión
Recomendados
Python的資料結構, 元組資料與應用, 字典資料與應用, 集合資料與應用, 使用sorted()函式, 使用enumerate()函式, 應用實例 – 井字棋遊戲
Python元組,字典,集合
Python元組,字典,集合
吳錫修 (ShyiShiou Wu)
a basic view for python learn
Python learn guide
Python learn guide
robin yang
串列資料結構, 串列函式, 串列方法, 串列的運算子, 字串與串列轉換, 串列的排序作業, 多維串列, 應用實例:撲克牌梭哈遊戲
Python串列資料應用
Python串列資料應用
吳錫修 (ShyiShiou Wu)
變數命名,基本資料型別,格式化輸出,資料輸入,運算子,自訂函式,變數有效範圍,內建資料處理函式
Python變數與資料運算
Python變數與資料運算
吳錫修 (ShyiShiou Wu)
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 機器學習 Machine Learning 是最近相當熱門的領域,隨著越來越多機器學習套件的推出,使得機器學習更加平易近人,更多人可以享受到機器學習帶來的好處。本演講將會以 Python 機器學習套件 scikit-learn 為例,介紹機器學習的訓練流程以及如何使用 scikit-learn 分析預測資料,本演講不會介紹Deep Learning, 很多機器學習演算法跟演算法背後的數學意義。
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
Cicilia Lee
條件運算式:使用關係運算子, 使用邏輯運算子, 使用 in 運算子 使用 is 運算子 選擇結構:單向選擇, 雙向選擇, 多向選擇, 巢狀選擇
Python分支作業
Python分支作業
吳錫修 (ShyiShiou Wu)
第01章 绪论(java版)
第01章 绪论(java版)
Yan Li
內建資料型別, 常值, 變數, 運算子與運算式, 資料型別轉換, 使用print()函式, 使用input()函式
Python基本資料運算
Python基本資料運算
吳錫修 (ShyiShiou Wu)
Recomendados
Python的資料結構, 元組資料與應用, 字典資料與應用, 集合資料與應用, 使用sorted()函式, 使用enumerate()函式, 應用實例 – 井字棋遊戲
Python元組,字典,集合
Python元組,字典,集合
吳錫修 (ShyiShiou Wu)
a basic view for python learn
Python learn guide
Python learn guide
robin yang
串列資料結構, 串列函式, 串列方法, 串列的運算子, 字串與串列轉換, 串列的排序作業, 多維串列, 應用實例:撲克牌梭哈遊戲
Python串列資料應用
Python串列資料應用
吳錫修 (ShyiShiou Wu)
變數命名,基本資料型別,格式化輸出,資料輸入,運算子,自訂函式,變數有效範圍,內建資料處理函式
Python變數與資料運算
Python變數與資料運算
吳錫修 (ShyiShiou Wu)
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 機器學習 Machine Learning 是最近相當熱門的領域,隨著越來越多機器學習套件的推出,使得機器學習更加平易近人,更多人可以享受到機器學習帶來的好處。本演講將會以 Python 機器學習套件 scikit-learn 為例,介紹機器學習的訓練流程以及如何使用 scikit-learn 分析預測資料,本演講不會介紹Deep Learning, 很多機器學習演算法跟演算法背後的數學意義。
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
Cicilia Lee
條件運算式:使用關係運算子, 使用邏輯運算子, 使用 in 運算子 使用 is 運算子 選擇結構:單向選擇, 雙向選擇, 多向選擇, 巢狀選擇
Python分支作業
Python分支作業
吳錫修 (ShyiShiou Wu)
第01章 绪论(java版)
第01章 绪论(java版)
Yan Li
內建資料型別, 常值, 變數, 運算子與運算式, 資料型別轉換, 使用print()函式, 使用input()函式
Python基本資料運算
Python基本資料運算
吳錫修 (ShyiShiou Wu)
Sun java
Sun java
softwaredesigner
给同事做的 Python 速成讲座
Python速成指南
Python速成指南
March Liu
結構化程式設計, 條件運算式, 選擇結構: 單向選擇, 雙向選擇, 巢狀選擇, 多向選擇
Python程式設計 - 分支作業
Python程式設計 - 分支作業
吳錫修 (ShyiShiou Wu)
2017 年 12 月 17 日 (日) 在台灣資料科學年會系列活動中, 主講的這個課程, 主要是希望幫助對 Python 有點基本瞭解後, 想要做資料分析但一直覺得有些地方卡卡的朋友。這門課介紹包括數據分析主流平台 Jupyter Notebook, 還有幾乎是必備套件如 NumPy, Matplotlib, Pandas, 還有做機器學習的 SciKit-Learn。用這些套件介紹資料分析的基本概念與工作流程。
手把手打開Python資料分析大門
手把手打開Python資料分析大門
Yen-lung Tsai
clean code
Keep your code clean
Keep your code clean
macrochen
10年前做的簡報~需要時翻出來還不錯用~
Programming python - part 1
Programming python - part 1
Che-Cheng Hsu
Fp
Fp
fangjiafu
hive sql
Sql培训 (1)
Sql培训 (1)
jhao niu
Julia Taiwan 第一次 meetup
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門
岳華 杜
在「人工智慧」學校介紹遞迴式神經網路的投影片。
Recurrent Neural Network 遞迴式神經網路
Recurrent Neural Network 遞迴式神經網路
Yen-lung Tsai
1、Arrays.sort方法概述 2、分析int[]的排序实现 3、对象实现了可比较接口Comparable 进行比较 4、对象没有可比较性,进行比较时需要靠比较器进行 5、以上排序算法是qsort和合并排序算法的实现
Arrays的Sort算法分析
Arrays的Sort算法分析
Zianed Hou
2010 Java Certification Day 你可以在以下鏈結找到中文內容: http://www.codedata.com.tw/java/understanding-lambda-closure-1-from-javascript-function-1/
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
透過5概念分享對Python的理解 1.你該知道Python的慣例 2.初探python資料結構 3.什麼是if-else, for , while 4.Code能重複用的函式 5.類別(class)是何物
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
Derek Lee
透過5概念分享對Python的理解 1.你需知道index, string, slicing 2.初探python資料結構 3.什麼是if-else, for , while 4.Code能重複用的函式 5.類別(class)是何物
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
Derek Lee
Java Collections中的Fail Fast机制
Java Collections中的Fail Fast机制
yiditushe
jQuery源码学习
jQuery源码学习
fangdeng
資料科學是現在熱門的領域,而 Python 是資料分析的當紅程式語言。然而很多 Python 資料分析主要套件並不全然那麼直覺,使得不少人學了基本語法之後,一直無法進入資料分析的領域。這個讓你掌握 Python 資料分析重要套件,如 NumPy, Matplotlib, Pandas, SciKit Learn 等等主要的功能與概念。 講者以多年教授 Python 的經驗,幫你破除容易卡關的地方。更重要的是,我們學習到的不只是這些套件的語法,而是瞭解整個資料分析的概念。在本課程之後,可以更深入的學習統計分析、機器學習乃至深度學習。 課程介紹: http://foundation.datasci.tw/py3-data-analysis-171217/
[系列活動] 手把手打開Python資料分析大門
[系列活動] 手把手打開Python資料分析大門
台灣資料科學年會
Java8 lambda
Java8 lambda
koji lin
javascript 闭包函数式机制分享。需要有一定 js 实践基础。
Javascript share
Javascript share
Xu Mac
PyCon China 2012 上海的讲稿。
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
勇浩 赖
身為一個開源專案開發者,也是一個研究人員,軟體工程與軟體架構是支撐整個專案可以被順利開發跟佈署的重要角色。在這場演講,我將會依據我的開發軟體經驗來告訴大家如何用 Julia 從零開發出一個中型的專案,描述在 Julia 的語言設計上可以對應到的軟體工程原則,並且跟大家分享我的開發方法、流程及心態。
[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅
岳華 杜
20200526 at AIA, Taichung
Julia: The language for future
Julia: The language for future
岳華 杜
Más contenido relacionado
La actualidad más candente
Sun java
Sun java
softwaredesigner
给同事做的 Python 速成讲座
Python速成指南
Python速成指南
March Liu
結構化程式設計, 條件運算式, 選擇結構: 單向選擇, 雙向選擇, 巢狀選擇, 多向選擇
Python程式設計 - 分支作業
Python程式設計 - 分支作業
吳錫修 (ShyiShiou Wu)
2017 年 12 月 17 日 (日) 在台灣資料科學年會系列活動中, 主講的這個課程, 主要是希望幫助對 Python 有點基本瞭解後, 想要做資料分析但一直覺得有些地方卡卡的朋友。這門課介紹包括數據分析主流平台 Jupyter Notebook, 還有幾乎是必備套件如 NumPy, Matplotlib, Pandas, 還有做機器學習的 SciKit-Learn。用這些套件介紹資料分析的基本概念與工作流程。
手把手打開Python資料分析大門
手把手打開Python資料分析大門
Yen-lung Tsai
clean code
Keep your code clean
Keep your code clean
macrochen
10年前做的簡報~需要時翻出來還不錯用~
Programming python - part 1
Programming python - part 1
Che-Cheng Hsu
Fp
Fp
fangjiafu
hive sql
Sql培训 (1)
Sql培训 (1)
jhao niu
Julia Taiwan 第一次 meetup
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門
岳華 杜
在「人工智慧」學校介紹遞迴式神經網路的投影片。
Recurrent Neural Network 遞迴式神經網路
Recurrent Neural Network 遞迴式神經網路
Yen-lung Tsai
1、Arrays.sort方法概述 2、分析int[]的排序实现 3、对象实现了可比较接口Comparable 进行比较 4、对象没有可比较性,进行比较时需要靠比较器进行 5、以上排序算法是qsort和合并排序算法的实现
Arrays的Sort算法分析
Arrays的Sort算法分析
Zianed Hou
2010 Java Certification Day 你可以在以下鏈結找到中文內容: http://www.codedata.com.tw/java/understanding-lambda-closure-1-from-javascript-function-1/
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
透過5概念分享對Python的理解 1.你該知道Python的慣例 2.初探python資料結構 3.什麼是if-else, for , while 4.Code能重複用的函式 5.類別(class)是何物
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
Derek Lee
透過5概念分享對Python的理解 1.你需知道index, string, slicing 2.初探python資料結構 3.什麼是if-else, for , while 4.Code能重複用的函式 5.類別(class)是何物
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
Derek Lee
Java Collections中的Fail Fast机制
Java Collections中的Fail Fast机制
yiditushe
jQuery源码学习
jQuery源码学习
fangdeng
資料科學是現在熱門的領域,而 Python 是資料分析的當紅程式語言。然而很多 Python 資料分析主要套件並不全然那麼直覺,使得不少人學了基本語法之後,一直無法進入資料分析的領域。這個讓你掌握 Python 資料分析重要套件,如 NumPy, Matplotlib, Pandas, SciKit Learn 等等主要的功能與概念。 講者以多年教授 Python 的經驗,幫你破除容易卡關的地方。更重要的是,我們學習到的不只是這些套件的語法,而是瞭解整個資料分析的概念。在本課程之後,可以更深入的學習統計分析、機器學習乃至深度學習。 課程介紹: http://foundation.datasci.tw/py3-data-analysis-171217/
[系列活動] 手把手打開Python資料分析大門
[系列活動] 手把手打開Python資料分析大門
台灣資料科學年會
Java8 lambda
Java8 lambda
koji lin
javascript 闭包函数式机制分享。需要有一定 js 实践基础。
Javascript share
Javascript share
Xu Mac
PyCon China 2012 上海的讲稿。
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
勇浩 赖
La actualidad más candente
(20)
Sun java
Sun java
Python速成指南
Python速成指南
Python程式設計 - 分支作業
Python程式設計 - 分支作業
手把手打開Python資料分析大門
手把手打開Python資料分析大門
Keep your code clean
Keep your code clean
Programming python - part 1
Programming python - part 1
Fp
Fp
Sql培训 (1)
Sql培训 (1)
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門
Recurrent Neural Network 遞迴式神經網路
Recurrent Neural Network 遞迴式神經網路
Arrays的Sort算法分析
Arrays的Sort算法分析
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
Java Collections中的Fail Fast机制
Java Collections中的Fail Fast机制
jQuery源码学习
jQuery源码学习
[系列活動] 手把手打開Python資料分析大門
[系列活動] 手把手打開Python資料分析大門
Java8 lambda
Java8 lambda
Javascript share
Javascript share
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
Más de 岳華 杜
身為一個開源專案開發者,也是一個研究人員,軟體工程與軟體架構是支撐整個專案可以被順利開發跟佈署的重要角色。在這場演講,我將會依據我的開發軟體經驗來告訴大家如何用 Julia 從零開發出一個中型的專案,描述在 Julia 的語言設計上可以對應到的軟體工程原則,並且跟大家分享我的開發方法、流程及心態。
[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅
岳華 杜
20200526 at AIA, Taichung
Julia: The language for future
Julia: The language for future
岳華 杜
2020.02.08@AIA, Taiwan
The Language for future-julia
The Language for future-julia
岳華 杜
Talk in AIA Taichung
20190907 Julia the language for future
20190907 Julia the language for future
岳華 杜
20190424 Shared in PyHUG
Metaprogramming in julia
Metaprogramming in julia
岳華 杜
20190413 Shared in pytorch hsinchu
Introduction to julia
Introduction to julia
岳華 杜
AI Tech 2019 2nd meetup
自然語言處理概覽
自然語言處理概覽
岳華 杜
2018/05/06 PyTorch Taichung meetup
Introduction to machine learning
Introduction to machine learning
岳華 杜
2018/09/02 PyTorch Taichung meetup
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
岳華 杜
2018/10/21 PyTorch Taichung meetup
Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴
岳華 杜
2018/11/25 PyTorch Taichung meetup 摘要: 近年來由於機器學習及深度學習的興盛,各領域都漸漸引進這樣的方法在未解的問題上。對於特徵的決定可以說是機器學習領域最重要不過的事情,而深度學習希望可以自動化特徵的萃取,讓模型自己學到如何萃取特徵。陸續有不同非監督式的方法被發展出來,從 autoencoder 出發,希望可以自動萃取重要的特徵,而 VAE 則更進一步希望可以從萃取的特徵產生原來的資料。如果有辦法產生原來的資料,那麼特徵是不是就代表了產生資料的決定因素。但往往藉由非監督式學習產生的因素都互相糾纏,無法直觀解釋,我們希望這些因素可以各自獨立被控制。於是 beta-VAE 做到了不糾纏的特徵萃取,其背後的理論就是 information bottleneck theory。Information bottleneck theory 以資訊理論的角度切入了深度學習模型,解釋了模型學習的動態行為、樣本大小的影響、隱藏層的影響...等等重要的議題,是目前最有可能成為深度學習根基的理論。
從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論
岳華 杜
20180811 COSCUP Speaker: 林峻頤 (Iblis Lin)
COSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in Julia
岳華 杜
20180811 COSCUP Speaker: 杜岳華
COSCUP: Introduction to Julia
COSCUP: Introduction to Julia
岳華 杜
2018/6/10 Pytorch Taichung meetup
Introduction to Julia
Introduction to Julia
岳華 杜
以大家聽得懂的方式講解機器學習,後面會帶一部份的資料科學
20180506 Introduction to machine learning
20180506 Introduction to machine learning
岳華 杜
交通大學網路福利社
20171127 當julia遇上資料科學
20171127 當julia遇上資料科學
岳華 杜
Julia Taiwan 10th meetup
20171117 oop and design patterns in julia
20171117 oop and design patterns in julia
岳華 杜
Julia Taiwan 9th meetup
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia
岳華 杜
Share in Taiwan R User Group / MLDM Monday.
20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理
岳華 杜
Identification of Cell States Using Super-Enhancer RNA
20170715 北Bio meetup
20170715 北Bio meetup
岳華 杜
Más de 岳華 杜
(20)
[COSCUP 2023] 我的Julia軟體架構演進之旅
[COSCUP 2023] 我的Julia軟體架構演進之旅
Julia: The language for future
Julia: The language for future
The Language for future-julia
The Language for future-julia
20190907 Julia the language for future
20190907 Julia the language for future
Metaprogramming in julia
Metaprogramming in julia
Introduction to julia
Introduction to julia
自然語言處理概覽
自然語言處理概覽
Introduction to machine learning
Introduction to machine learning
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Semantic Segmentation - Fully Convolutional Networks for Semantic Segmentation
Batch normalization 與他愉快的小伙伴
Batch normalization 與他愉快的小伙伴
從 VAE 走向深度學習新理論
從 VAE 走向深度學習新理論
COSCUP: Foreign Function Call in Julia
COSCUP: Foreign Function Call in Julia
COSCUP: Introduction to Julia
COSCUP: Introduction to Julia
Introduction to Julia
Introduction to Julia
20180506 Introduction to machine learning
20180506 Introduction to machine learning
20171127 當julia遇上資料科學
20171127 當julia遇上資料科學
20171117 oop and design patterns in julia
20171117 oop and design patterns in julia
20171014 tips for manipulating filesystem in julia
20171014 tips for manipulating filesystem in julia
20170807 julia的簡單而高效資料處理
20170807 julia的簡單而高效資料處理
20170715 北Bio meetup
20170715 北Bio meetup
COSCUP: Metaprogramming in Julia
1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metaprogramming in Julia Iblis
Lin 2018/8/11 Iblis Lin Metaprogramming in Julia
2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction 粗淺的分類 Text-based e.g. macro in
C Abstract Syntax Tree Level Lisp Julia Iblis Lin Metaprogramming in Julia
3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction Metaprogramming 把程式本身視為 data
的一種 Iblis Lin Metaprogramming in Julia
4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction 那麼有 data structure
跟 manipulations Iblis Lin Metaprogramming in Julia
5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction 那麼有 data structure
跟 manipulations 在 Julia 中有 Expr 這個 type Iblis Lin Metaprogramming in Julia
6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Construct Expressions julia 0.7/1.0: §
¤ julia> e = Meta.parse("42 + 1") :(42 + 1) ¦ ¥ julia 0.6: § ¤ julia> e = parse("42 + 1") :(42 + 1) ¦ ¥ Iblis Lin Metaprogramming in Julia
7.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expressions § ¤ julia> typeof(e) Expr ¦
¥ Fields of Expr: head::Symbol args::Array{Any,1} Iblis Lin Metaprogramming in Julia
8.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expressions § ¤ julia> e.head :call julia>
e.args 3-element Array{Any,1}: :+ 42 1 ¦ ¥ Iblis Lin Metaprogramming in Julia
9.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expressions 程式已經用 Expr 來表示了,那麼怎麼執行? Iblis
Lin Metaprogramming in Julia
10.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expressions 程式已經用 Expr 來表示了,那麼怎麼執行? §
¤ julia> e :(42 + 1) julia> eval(e) 43 ¦ ¥ Iblis Lin Metaprogramming in Julia
11.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expressions is mutable 所以可以各種改。 §
¤ e.args[1] = :- e.args[3] = 50 ¦ ¥ Iblis Lin Metaprogramming in Julia
12.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 其他生出 Expression 的方式 1.
直接 call constructor § ¤ Expr(:call, :+, 2, 3) ¦ ¥ Iblis Lin Metaprogramming in Julia
13.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 其他生出 Expression 的方式 1.
直接 call constructor § ¤ Expr(:call, :+, 2, 3) ¦ ¥ 2. Quoting § ¤ :(1 + 2) ¦ ¥ § ¤ quote 1 + 2 2 + 3 end ¦ ¥ Iblis Lin Metaprogramming in Julia
14.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Printing Expr Instance §
¤ dump(e) ¦ ¥ § ¤ Meta.show_sexpr(e) ¦ ¥ Iblis Lin Metaprogramming in Julia
15.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Symbol Type Iblis
Lin Metaprogramming in Julia
16.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symbol Like symbol in
Lisp or atom in Erlang. § ¤ julia> :foo :foo julia> typeof(:foo) Symbol ¦ ¥ Iblis Lin Metaprogramming in Julia
17.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symbol Like symbol in
Lisp or atom in Erlang. § ¤ julia> :foo :foo julia> typeof(:foo) Symbol ¦ ¥ § ¤ julia> Symbol("bar-1") Symbol("bar-1") ¦ ¥ Iblis Lin Metaprogramming in Julia
18.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symbol 在 Expr 中的
identifier 會使用 symbol variable name function name ... Iblis Lin Metaprogramming in Julia
19.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symbol 在 Expr 中的
identifier 會使用 symbol variable name function name ... § ¤ julia> e = :(x = 1) :(x = 1) julia> e.args 2-element Array{Any,1}: :x 1 ¦ ¥ Iblis Lin Metaprogramming in Julia
20.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpolation 動態的產生 Expr 的手段之一 Iblis
Lin Metaprogramming in Julia
21.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpolation 用 $ 來
reference 外面的變數 長得很像 string interpolation § ¤ julia> x = 42; julia> e = :($x + y) :(42 + y) ¦ ¥ Iblis Lin Metaprogramming in Julia
22.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Splatting Interpolation 可以展開整個 array §
¤ julia> A 3-element Array{Symbol,1}: :x :y :z julia> e = :(f($(A...))) :(f(x, y, z)) ¦ ¥ Iblis Lin Metaprogramming in Julia
23.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope 打開
REPL 後,我在哪裡? Iblis Lin Metaprogramming in Julia
24.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope 打開
REPL 後,我在哪裡? § ¤ julia> @__MODULE__ Main ¦ ¥ Iblis Lin Metaprogramming in Julia
25.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope 打開
REPL 後,我在哪裡? § ¤ julia> @__MODULE__ Main ¦ ¥ § ¤ foo = 1 e = :(foo += 42) eval(e) ¦ ¥ 請問現在 foo 是多少? Iblis Lin Metaprogramming in Julia
26.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope eval
的影響範圍是 module 的 global scope 能夠對 module 的 global scope 有 side effect Iblis Lin Metaprogramming in Julia
27.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope eval
的影響範圍是 module 的 global scope 能夠對 module 的 global scope 有 side effect § ¤ function f() e = :(foo -= 100) eval(e) end foo = 1 f() ¦ ¥ Iblis Lin Metaprogramming in Julia
28.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eval and Scope 那麼這個呢? §
¤ e = :(bar + 1) eval(e) ¦ ¥ Iblis Lin Metaprogramming in Julia
29.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example 那麼我們現在來實際解決點問題。 Iblis Lin Metaprogramming
in Julia
30.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example 那麼我們現在來實際解決點問題。 現在希望有個 helper function,這個
function 能夠 對任意的新 struct 建立好看的 show function Iblis Lin Metaprogramming in Julia
31.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example § ¤ julia> struct
Bar a::Int b::Bool magic::Any end julia> bar = Bar(1, false, "good") Bar(1, false, "good") julia> make_show(Bar, :magic, :b) julia> bar magic -> good b -> false ¦ ¥ Iblis Lin Metaprogramming in Julia
32.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example § ¤ function make_show(T::DataType,
fields::Symbol...) fields = QuoteNode.(fields) print_exprs = [ :(println(io, "$($f) -> ", getfield(x, $f))) for f in fields] e = :(Base.show(io::IO, x::$T) = $(print_exprs...)) eval(e) end ¦ ¥ Iblis Lin Metaprogramming in Julia
33.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro Iblis Lin Metaprogramming
in Julia
34.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro Macro 能夠接受參數,而 return
一個 expression, 並且立即執行這個 expression。 Iblis Lin Metaprogramming in Julia
35.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro Macro 能夠接受參數,而 return
一個 expression, 並且立即執行這個 expression。 § ¤ julia> macro m() :(println("Hello, Macro")) end @m (macro with 1 method) julia> @m() Hello, Macro ¦ ¥ Iblis Lin Metaprogramming in Julia
36.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro 試試看參數 § ¤ julia> macro
m(name) :(println("Hello, ", $name)) end @m (macro with 2 methods) julia> @m("Iblis") Hello, Iblis ¦ ¥ Iblis Lin Metaprogramming in Julia
37.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro – Debugging 可以用
@macroexpand 這個 macro 來看看你的 macro 回傳了啥 § ¤ julia> @macroexpand(@m("Iblis")) :((Main.println)("Hello, ", "Iblis")) ¦ ¥ Iblis Lin Metaprogramming in Julia
38.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro – Syntax
Sugar 在 call 一個 macro 的時候,可以偷懶不寫括號。 § ¤ julia> @m "Iblis" Hello, Iblis ¦ ¥ 而所有參數用空白切開。 Iblis Lin Metaprogramming in Julia
39.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro – Syntax
Sugar 在 call 一個 macro 的時候,可以偷懶不寫括號。 § ¤ julia> @m "Iblis" Hello, Iblis ¦ ¥ 而所有參數用空白切開。 § ¤ julia> @macroexpand @m "Iblis" :((Main.println)("Hello, ", "Iblis")) ¦ ¥ Iblis Lin Metaprogramming in Julia
40.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro – Example §
¤ macro make_show(T::Symbol, fields::Symbol...) fields = QuoteNode.(fields) print_exprs = [ :(println(io, "$($f) -> ", getfield(x, $f))) for f in fields] :(Base.show(io::IO, x::$T) = $(print_exprs...)) end ¦ ¥ Iblis Lin Metaprogramming in Julia
41.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macro – Parse
time and Runtime § ¤ macro m(...) # parse time # ... return :(#= excuted at runtime =#) end ¦ ¥ Iblis Lin Metaprogramming in Julia
42.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals Iblis Lin
Metaprogramming in Julia
43.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals 這個東西就是透過
macro 完成的 e.g. § ¤ julia> VERSION v"1.0.0" julia> v"4.2" v"4.2.0" julia> typeof(v"4.2") VersionNumber ¦ ¥ Iblis Lin Metaprogramming in Julia
44.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals §
¤ julia> using Sockets julia> ip"1.1.1.1" ip"1.1.1.1 ¦ ¥ Iblis Lin Metaprogramming in Julia
45.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals 只要定義
@x_str 即可。 Iblis Lin Metaprogramming in Julia
46.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals 只要定義
@x_str 即可。 § ¤ macro foo_str(s) :(reverse($s)) end ¦ ¥ Iblis Lin Metaprogramming in Julia
47.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Non-Standard String Literals 只要定義
@x_str 即可。 § ¤ macro foo_str(s) :(reverse($s)) end ¦ ¥ § ¤ julia> foo"abc" "cba" ¦ ¥ Iblis Lin Metaprogramming in Julia
48.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generated Functions Iblis Lin
Metaprogramming in Julia
49.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generated Functions 當我們需要根據 Type
資訊,動態產生出不同的 function body,那麼就使用 generated functions。 Iblis Lin Metaprogramming in Julia
50.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generated Functions 對於已經看過的 input
type 組合,generated functions 的 function body 會 cache 起來,下次直 接使用。 Iblis Lin Metaprogramming in Julia
51.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generated Functions § ¤ @generated
function bar(x) if x <: Integer :(x ˆ 2) else :(x) end end ¦ ¥ Iblis Lin Metaprogramming in Julia
52.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q & A Iblis
Lin Metaprogramming in Julia
Descargar ahora