DRYing the world
Ingmar Dasseville - VIGOR day 2015
DRY
on't
epeat
ourself
Draw A Triangle
Draw A Square
GoUp(1)
Rotate(120)
GoUp(1)
Rotate(120)
GoUp(1)
Rotate(120)
GoUp(1)
Rotate(90)
GoUp(1)
Rotate(90)
GoUp(1)
Rotate(90)
GoUp(1)
Rotate(90)
We Enjoy Typing
WET code
DRYing the code
polygon(n) {
for (int i = 0 ; i < n ; i++) {
GoUp(1)
Rotate(360/n)
}
}
DRYing
with loops
polygon(n) = replicateM n (do
GoUp(1)
Rotate(360/n)
)
DRYing with higher order functions
?
Does this sequence of actions correspond to a polygon?
Knowledge Representation
- Knowledge: Polygon(n) = a set of lines
- Problem:
- Get the set of lines for a certain N
- Check if there exist an N such that the Polygon(N) is my set of lines
Problem Solved?
As long as you're not reading the fine print, it is.
IDP / ASP / ...
{
∀ x y: Reachable(x,y) ↤ Edge(x,y).
∀ x y: Reachable(x,y) ↤ ∃ z: Reachable(x,z)
& Reachable(z,y).
}
in 80%* of the theories
*non-scientific number
Proposed Solutions
C-style macros
Our Solution
Conclusion
When creating a language, enable the programmer to program DRY!
- Implementation
- Libraries
- Even more abstractions!
My question for you:
DRY Knowledge Representation
DRY Software Engineering
≟
DRYing the world
By Ingmar Dasseville
DRYing the world
- 1,038