RosettaCodeData/Task/Generic-swap/00DESCRIPTION

19 lines
1.4 KiB
Text
Raw Permalink Normal View History

2016-12-05 22:15:40 +01:00
;Task:
Write a generic swap function or operator which exchanges the values of two variables (or, more generally, any two storage places that can be assigned), regardless of their types.
2015-11-18 06:14:39 +00:00
If your solution language is statically typed please describe the way your language provides genericity.
2013-04-10 21:29:02 -07:00
2015-11-18 06:14:39 +00:00
If variables are typed in the given language, it is permissible that the two variables be constrained to having a mutually compatible type, such that each is permitted to hold the value previously stored in the other without a type violation.
That is to say, solutions do not have to be capable of exchanging, say, a string and integer value, if the underlying storage locations are not attributed with types that permit such an exchange.
2013-04-10 21:29:02 -07:00
Generic swap is a task which brings together a few separate issues in programming language semantics.
Dynamically typed languages deal with values in a generic way quite readily, but do not necessarily make it easy to write a function to destructively swap two variables, because this requires indirection upon storage places or upon the syntax designating storage places.
Functional languages, whether static or dynamic, do not necessarily allow a destructive operation such as swapping two variables regardless of their generic capabilities.
Some static languages have difficulties with generic programming due to a lack of support for ([[Parametric Polymorphism]]).
Do your best!
2016-12-05 22:15:40 +01:00
<br><br>