Question: So i have searched a lot about showing a place in google maps, but all of tutorial show a technique which requires Latitude and Longitude, but can someone please tell me a trick where i can achieve this using just the address string ? Thank you

Answer: 
The [lens](http://hackage.haskell.org/package/lens) library, in modules [Control.Lens.Iso](http://hackage.haskell.org/package/lens-4.1.2/docs/Control-Lens-Iso.html) and [Control.Lens.Wrapped](http://hackage.haskell.org/package/lens-4.1.2/docs/Control-Lens-Wrapped.html), has a few utilities that make working with such conversions easier. Unfortunately, at the moment the Template Haskell [machinery](http://hackage.haskell.org/package/lens-4.1.2/docs/Control-Lens-TH.html#v%3amakeWrapped) for such cases does not handle records, only newtypes, so you'll have to define the instances yourself. For example:

```
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}

import Control.Lens

data Foo = Foo { baz :: Int, bar :: Int } deriving Show

instance Wrapped Foo where
  type Unwrapped Foo = (Int,Int)
  _Wrapped' = iso (\(Foo baz' bar') -> (baz',bar')) (\(baz',bar') -> Foo baz' bar')

```

Now we can wrap and unwrap easily:

```
*Main> (2,3) ^. _Unwrapped' :: Foo
Foo {baz = 2, bar = 3}

*Main> Foo 2 3 ^. _Wrapped'
(2,3)

```

We can also modify a `Foo` using a function that works on the tuple:

```
*Main> over _Wrapped' (\(x,y)->(succ x,succ y))  $ Foo 2 5
Foo {baz = 3, bar = 6}

```

And the reverse:

```
*Main> under _Wrapped' (\(Foo x y)->(Foo (succ x) (succ y)))  $ (2,5)
(3,6)

```
In some cases, you can use [unsafeCoerce](https://hackage.haskell.org/package/base-4.14.0.0/docs/Unsafe-Coerce.html). The name of the function should be quite a clear warning to be very careful. Particularly, the behavior is dependent on the compiler and even compiler version.

```
data Bar = Bar Text Text

tupleToBar :: (Text, Text) -> Bar
tupleToBar = unsafeCoerce

```