<p>In JavaScript, using the Prototype library, the following functional construction is possible:</p>

<pre><code>var words = ["aqueous", "strength", "hated", "sesquicentennial", "area"];
words.pluck('length');
//-&gt; [7, 8, 5, 16, 4]
</code></pre>

<p>Note that this example code is equivalent to</p>

<pre><code>words.map( function(word) { return word.length; } );
</code></pre>

<p>I wondered if something similar is possible in F#:</p>

<pre><code>let words = ["aqueous"; "strength"; "hated";"sesquicentennial"; "area"]
//val words: string list
List.pluck 'Length' words
//int list = [7; 8; 5; 16; 4]
</code></pre>

<p>without having to write:</p>

<pre><code>List.map (fun (s:string) -&gt; s.Length) words
</code></pre>

<p>This would seem quite useful to me because then you don't have to write functions for every property to access them.</p>

Prototype's
```
pluck
```
takes advantage of that in Javascript
```
object.method()
```
is the same as
```
object[method]
```
.
Unfortunately you can't call
```
String.Length
```
either because it's not a static method. You can however use:
```
```
#r "FSharp.PowerPack.dll" 
open Microsoft.FSharp.Compatibility
words |> List.map String.length
```
```
http://research.microsoft.com/fsharp/manual/FSharp.PowerPack/Microsoft.FSharp.Compatibility.String.html
However, using
```
Compatibility
```
will probably make things more confusing to people looking at your code.