# Differences between ParameterHandling and Functors

**URL:** <https://discourse.julialang.org/t/differences-between-parameterhandling-and-functors/63495>\
**Category:** General Usage\
**Tags:** packages, struct, functors\
**Created:** [June 24, 2021, 12:03pm UTC](https://discourse.julialang.org/t/differences-between-parameterhandling-and-functors/63495 "2021-06-24T12:03:41Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![theogf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/theogf/32/1987_2.png) [@theogf](https://discourse.julialang.org/u/theogf)\
**Post date:** [June 24, 2021, 12:03pm UTC](https://discourse.julialang.org/t/differences-between-parameterhandling-and-functors/63495/1 "2021-06-24T12:03:41Z")

</div>

Could someone tell me if I got the differences between [ParameterHandling.jl](https://github.com/invenia/ParameterHandling.jl) and [Functors.jl](https://github.com/FluxML/Functors.jl) right?

Both seem to allow to deconstruct/reconstruct a struct to extract arrays of parameters.  
The differences I see are :

- `Functors.jl` allow to transform at every level via `fmap`
- The deconstruction output of `ParameterHandling.jl` is a `Vector` while `Functors.jl` returns a `NamedTuple`
- `ParameterHandling.jl` allows to define constrained parameters
