Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Loïc Knuchel
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Loïc Knuchel
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
Comment Transformer vos boucles Objective-C en “collection pipelines” en utilisant le framework BlocksKit (ou Swift), par Mathieu Godart (votre serviteur). Cette présentation s’inspire de la série d’articles publiée par Martin Fowler, Refactoring with Loops and Collection Pipelines (http://martinfowler.com/articles/refactoring-pipelines.html).
Comment Transformer vos boucles Objective-C en “collection pipelines” en utilisant le framework BlocksKit (ou Swift), par Mathieu Godart (votre serviteur). Cette présentation s’inspire de la série d’articles publiée par Martin Fowler, Refactoring with Loops and Collection Pipelines (http://martinfowler.com/articles/refactoring-pipelines.html).
30. 🌴
--v (arr: {?}) -> ?
local function sum(arr)
local total = 0
for i, v in ipairs(arr) do
total = total + v
end
return total
end
31. 🌴
--v (arr: {integer}) -> integer
local function sum(arr)
local total = 0 --: integer
for i, v in ipairs(arr) do
total = total + v
end
return total
end
33. 🌴
--v (id: integer) ->
--v {id = integer, name = string,
--v meta = table?}
local function build_packet(id)
local p = {} --: ??????
p.id = id
p.name = to_name(id)
if has_meta then
p.meta = get_meta(id)
end
return p
end
34. 🌴
--v (id: integer) ->
--v {id = integer, name = string,
--v meta = table?}
local function build_packet(id)
local p = {} --: {}
p.id = id
--# assume p: {id = integer}
p.name = to_name(id)
--# assume p: {id = integer, name = string}
if has_meta then
p.meta = get_meta(id)
end
--# assume p: {id = integer, name = string,
--# meta = table?}
return p
end
35. 🌴
HTTPClient = {} --: module
function HTTPClient.Get(url, opts)
--
return HTTPClient.Request("GET", url, opts)
end
function HTTPClient.Post(url, data, opts)
return HTTPClient.Request("POST", url, data, opts)
end
--v (method: string, url: string, data: string?,
--v opts: HTTPOptions?) -> (HTTPResponse) | (nil, string)
function HTTPClient.Request(method, url, data, opts)
-- ...
end