2009-07-05

Deep REBOL: Bindology

I’m often asked why I think REBOL is a “deep” language. This question is no surprise. REBOL’s ordinary syntax — the so called DO dialect — is unlikely to be very impressive to a veteran Ruby, Haskell, or C# programmer. E.g.,

foreach x [1 2 3] [
    print x
]

While I think the simplicity of the DO dialect is a strength, it causes many — probably most — developers to dismiss REBOL out of hand. But those that stick around eventually discover that there’s more to REBOL than meets the eye.

REBOL’s depth comes from the runtime behavior of three special datatypes, word!, block! and object!, optionally combined with the power of the PARSE dialect.

REBOL words are the symbols of the language, such as foreach, x and print in the example above. The closest equivalent in a traditional programming language is an identifier (or a keyword), except that unlike an identifier, REBOL words are directly and immediately accessible at runtime. There is no special API, such as reflection or runtime type information, required. I urge you not to get too cozy with this idea, however. Though there are some superficial resemblances, REBOL words are neither identifiers nor keywords.

The most common use of a REBOL word is to serve as a variable. For instance, in the example above the word foreach serves as a variable pointing to a built-in function that iterates over a series. However, there is no requirement that words serve as variables. They can be used directly as symbols in their own right.

Blocks are a bit simpler to understand than words, and nearly as ubiquitous. A block is a sequence of zero or more REBOL values (words, integers, strings, urls and so on) enclosed between square brackets. Blocks are not like the curly braces of a language like C. They are actual values and can be (and usually are) passed as arguments to functions. For instance, the foreach function in the example above takes three arguments. First, a word to serve as the iteration variable. Second, a series of some kind. In this case, the block [1 2 3]. And lastly, another block containing the code to be executed for each iteration. To make this more explicit, take a look at the following example.

action: [ print x ]
foreach x [1 2 3] action

(A word with a colon after it is called a set-word!. The colon is not an operator. It is a part of the word itself and cannot be separated from it. A set-word is used to assign a value to a word. In this case, we are assigning the block [ print x ] to the word action.)

This is functionally equivalent to the first example. It also conveniently points out another interesting fact about REBOL blocks: By default, their evaluation is deferred. The action block in the example above contains two (literal, unevaluated) REBOL words, print and x. It is only when we pass this block as an argument to foreach that the block is evaluated and the print word resolves to a function. Note that the act of passing a block as an argument does not necessarily mean it will be evaluated. It depends on the function to which it is passed.

In order to serve as variables, REBOL words must be bound to a context, which is a value of type object!. By default, REBOL provides a global context. Any word not bound to a specific context automatically expands the global context. In fact, the global context is the only context that can be expanded. All other contexts must explicitly declare the words that are bound to them, and once a context is declared, it cannot be expanded further. This is best shown with an example.

x: 99
foo: context [
    x: 17
    print x
]
print x

Look carefully at the example above. We have two different x’s. The first one is declared and assigned in the global context, and the second is declared and assigned in the foo context. The second print x statement prints 99, not 17. These two words are said to have the same spelling, but they are not the same word. This is an important distinction.

At first glance, this looks like the ordinary scope rules one finds in a traditional programming language. It’s actually more interesting than that. Take a look at another example.

x: 99
xs: []
foo: context [
    x: 17
    append xs 'x
]
probe xs
; == [x]
print xs
; == 17

This example will take some explaining. First, the lines beginning with semicolons are comments. I’ve used them here to show what the result of executing the preceding line of code is. So, first we assign the value 99 to the word x in the global context. We then declare an empty block and assign it to xs. Then we declare a context and, inside it, we declare another x bound to that context. We then append the word x to our block, xs. The apostrophe is used to say that we want to refer to the word itself, not its value. This means that after append xs 'x is executed, the variable xs contains [x], not [17], as shown by executing the probe function, which prints out an unevaluated value. The print function, however, does evaluate its argument. In this case, it prints 17. (When passed a block, print spits out all the values with a single space between them. If there’s only one value in the block, it’s just printed as-is.)

Why didn’t print xs spit out 99? How did print know which x to print? REBOL words carry a reference to their context with them. It’s not where a word is evaluated that makes the difference, but where it’s declared. Because of this, it’s entirely possible to have a block containing [x x x] in which each x was declared in a different context and each one has a completely different value! In fact, I think it would be useful to show just such an example.

xs: []
use [x] [
    x: 12
    append xs 'x
]
use [x] [
    x: 9
    append xs 'x
]
use [x] [
    x: "REBOL"
    append xs 'x
]
probe xs
; == [x x x]
print xs
; == 12 9 REBOL

The use function creates an anonymous context. The first block passed to it contains declarations of the words that are bound to the anonymous context, and the second block contains any code we wish to execute in that context. The important thing to note here is that the xs variable ends up containing [x x x]. Although each of these words has the same spelling, “x”, they are not the same word. Each is declared in a different context and points to a different value. This is demonstrated by printing the values.

The relationship between words and contexts is known as Bindology in REBOL jargon. Fortunately, it isn’t necessary to have a deep understanding of Bindology to write basic REBOL code, but (in my humble opinion) it’s indispensible for doing anything advanced.

Once I’d figured all of this out, I thought it was extremely interesting, and a very unique way to design a language. But my first thought after that was to ask myself why anyone would design a language this way. What does it gain you? While you can do some very useful things with it, I think the answer lies in the ability to create REBOL dialects.

In REBOL, a dialect is a sequence of REBOL values inside of a block, interpreted using the parse function. This is more easily demonstrated than explained, so here’s an example.

rules: [
    any [
        set count integer!
        set value [ string! | word! ] (value: either string? value [value] [get value])
        (repeat n count [print value])
    ]
]
last-name: "Sassenrath"
parse [3 "Carl" 4 last-name] rules

The second argument of parse is a block specified in the PARSE dialect, the syntax of which is (far) outside the scope of this blog post. Suffice it to say that these rules provide the grammar for a very simple dialect. This dialect must consist of a sequence of zero or more integer-string or integer-word pairs. For each pair encountered, the string is printed out the number of times specified. If a word is encountered, it is evaluated, and the result is also printed to standard output.

This isn’t a very useful or complex dialect, but truly, the sky’s the limit. The only proviso is that the dialect must consist of a sequence of valid REBOL values, optionally including words. Note that dialects could not exist if blocks were immediately evaluated. By deferring their evaluation, we give parse the opportunity to interpret the block in whatever way we wish, completely bypassing REBOL’s ordinary DO dialect. We also have the opportunity, using Bindology, to evaluate any REBOL words that are included in the dialect, if we wish to do so and if our grammar permits them.

In sum, Bindology allows us to defer the execution of blocks for various purposes, including the specification of dialects, while allowing us to include REBOL words in the block without fear of side effects. This allows for some very powerful and unique methodologies, and it’s what gives REBOL its depth.

278 comments:

  1. One gets the impression that REBOL is a lot like scheme.

    ReplyDelete
  2. I think that's no surprise, since Scheme is a "dialect" of Lisp. According to the Wikipedia article on REBOL, Lisp (along with Forth, Logo, and and Self) influenced the design of REBOL.

    Unfortunately I just don't know enough about Scheme to be able to make my own judgment.

    ReplyDelete
  3. very interesting blogpost!

    ReplyDelete
  4. Greg,
    Are you part of the Rebol3 Altme world? If not, you should drop in some time.

    Thanks for the nice blogs. It's nice to see why others like this language so much.

    ReplyDelete
  5. I am on AltMe, and should probably get on it more often.

    ReplyDelete
  6. Just to say, in R3, objects are extensibles.

    >>append obj: context [a: 1][b: 2]
    == make object! [
    a: 1
    b: 2
    ]

    It's the same object, not a new one.

    >> obj
    == make object! [
    a: 1
    b: 2
    ]

    ReplyDelete
  7. This is really a great stuff for sharing. Keep it up .Thanks for sharing Cost Accounting Help

    ReplyDelete
  8. This is really a great stuff for sharing. Keep it up .Thanks for sharing Cost Accounting Help

    ReplyDelete
  9. Well thanks for posting such an outstanding idea. I like this blog & I like the topic and thinking of making it right HBS case analysis

    ReplyDelete
  10. Good way of telling, good post to take facts regarding my presentation subject matter, which i am going to deliver in my college
    Mechanical Engineering Capstone Project Help

    ReplyDelete
  11. Coursework Project Help Service
    Good way of telling, good post to take facts regarding my presentation subject matter, which i am going to deliver in my college

    ReplyDelete
  12. Good way of telling,DO My C programming Assignment
    good post to take facts regarding my presentation subject matter, which i am going to deliver in my college

    ReplyDelete
  13. Good way of telling, good post to take facts regarding my presentation subject matter, which i am going to deliver in my college
    write essay for me

    ReplyDelete
  14. Good way of telling, good post to take facts regarding my presentation subject matter, which i am going to deliver in my college
    Economics Project Help

    ReplyDelete
  15. by visiting this site I found cool stuff here Dissertation Writing Service Term Paper keep it up.

    ReplyDelete
  16. well as suction plus increased battery sitew.in/ life so it's ready to work. With Website sensors, it could browse effectively Best Automatic Robot Vacuum Cleaners in 2017 Reviews and won't leave any kind of dirt behind.

    ReplyDelete
  17. I personally like your post; you have shared good insights and experiences. Keep it up.

    ReplyDelete
  18. Really i appreciate the effort you made to share the knowledge. This is really a great stuff for sharing. Keep it up. Thanks for sharing.
    C Assignment Help

    ReplyDelete
  19. your youngster in strolling, weebly.com/ but they do make for a fun toy as they zoom all over the house. A lot of us Title matured with walkers as well as Best Baby Push Walker Or Push Cart​ would certainly like.

    ReplyDelete
  20. Guess what? Nobody uses this anymore

    ReplyDelete
  21. Well thanks for posting such an outstanding idea. I like this blog & I like the topic and thinking of making it right. aussie essay writing

    ReplyDelete
  22. Great Information,it has lot for stuff which is informative.I will share the post with my friends. Learn More

    ReplyDelete
  23. I loved the way you discuss the topic great work thanks for the share. Marketing Dissertation Writing Service

    ReplyDelete
  24. "Load" and "save" are used to conveniently manage certain types of data in formats directly usable by REBOL (images, sounds, DLLs, certain native data structures, etc.). "read" and "write" are used to store and retrieve typical types of data, exactly byte for byte without conversion or formatting. use this site
    https://studymoose.com/

    ReplyDelete
  25. I appreciate this work amazing post for us I like it. Case Studies Analysis by visiting this site I found cool stuff here keep it up.


    ReplyDelete
  26. Hi buddy, your blog' s design is simple and clean and i like it. Your blog posts about Online writing Help are superb. Please keep them coming. Greets! Computer Science Assignment Help

    ReplyDelete
  27. Great Information,it has lot for stuff which is informative.I will share the post with my friends. Help Writing Your Dissertation

    ReplyDelete
  28. Usually I do not read article on blogs, but I wish to say that this write-up very pressured me to take a look at and do so! Your writing taste has been surprised me. Thank you, quite great post. https://games.lol/puzzle/

    ReplyDelete
  29. Thanks a lot for the post. It has helped me get some nice ideas. I hope I will see some really good result soon. mp3 downloader

    ReplyDelete
  30. This blog site has got lots of really helpful information on it! Cheers for informing me! our site

    ReplyDelete
  31. I admire what you have done here. I like the part where you say you are doing this to give back but I would assume by all the comments that this is working for you as well. All Star Sprinkler Repair

    ReplyDelete
  32. Spot on with this particular write-up, I truly think this website needs extra consideration. I’ll probably be again to read extra, thanks for that details. remodeling

    ReplyDelete
  33. Wow ,this article is pretty cool ,it's so fantastic ,which led me find a new life style and happy all day ,it's the best comment that i have saw so far ,wish to enter the website you mentined during the article ,and looking forward to have a brand new shopping experience on the website ,too bathroom remodel cost

    ReplyDelete
  34. Meski menjadi keputusan sulit dalam melakukan cara menggugurkan hamil terkadang pilihan tersebut tidak bisa dihindari . Lantas , bagaimana metode yang tepat untuk cara menggugurkan kehamilan dengan cepat dan aman ? Tindakan KURET merupakan langkah yang paling aman di bandingkan dengan yang lainnya , Jika anda saat ini mengalami tanda kehamilan dan ternyata usianya sekitar 1 bulan . Namun kehamilan itu tidak anda inginkan dan ingin melakukan cara menggugurkan kandungan 1 bulan , sebaiknya Anda konsultasi ke pihak medis . Pahami tentang alat reproduksi wanita untuk menjaga kesehatan . Gangguan kewanitaan seperti telat datang bulan membuat perempuan merasa cemas sekali . Apalagi bagi gadis yang belum mempunyai pasangan resmi . Hal ini tentu akan membuat mereka semakin khawatir . Buat anda yang pasangannya kurang bergairah maka sangat perlu untuk melakukan cara merangsang wanita agar kedua belah pihak dapat merasakan saat bercinta .

    ReplyDelete
  35. Well, this post is quite good! Thanks for updating my information about the subject. carpet steam cleaner

    ReplyDelete
  36. The author has written an excellent article. You made your point and not much to discuss. It's like this universal truth that you can not argue with the truth is not universal, everything has its exception. Thanks for this information. carpet cleaning

    ReplyDelete
  37. I just thought I'd RSS this blog but I have no idea how to do it properly. Can someone shed some light on this for me? Or just give some sort of instructions. thanks! remodeling

    ReplyDelete
  38. I really appreciate this blog post because i find many ideas and information from it, keep sharing such informative blog.
    water damage restoration companies fort myers fl

    ReplyDelete
  39. פוסט מעניין, משתף עם העוקבים שלי. תודה.
    פינת אוכל עגולה

    ReplyDelete
  40. This comment has been removed by the author.

    ReplyDelete
  41. This comment has been removed by the author.

    ReplyDelete
  42. אין ספק שזה אחד הנושאים המעניינים. תודה על השיתוף.
    [url=http://bit.ly/2YG5fJ3]טבעות אירוסין מעוצבות[/url]

    ReplyDelete
  43. אין ספק שזה אחד הנושאים המעניינים. תודה על השיתוף.
    דף מתוק

    ReplyDelete
  44. הדעות שלי קצת חלוקות בעניין הזה אבל ללא ספק כתבת מעניין מאוד
    מגשי אירוח לבר מצווה

    ReplyDelete
  45. This comment has been removed by the author.

    ReplyDelete
  46. כתיבה מעולה, אהבתי. אשתף עם העוקבים שלי
    שולחן עגול נפתח

    ReplyDelete
  47. תמשיכו בפרסום פוסטים מעניינים כמו זה. תודה.
    עיניים שקועות

    ReplyDelete
  48. אין ספק שזה אחד הנושאים המעניינים. תודה על השיתוף.
    קומפי רהיטים

    ReplyDelete
  49. כתיבה מעולה, אהבתי. אשתף עם העוקבים שלי.
    קומפי רהיטים

    ReplyDelete
  50. סגנון כתיבה מרענן, תודה על השיתוף.

    ReplyDelete
  51. פוסט נחמד. חייב לשתף עם העוקבים שלי.
    שמיכת חודשים תינוק

    ReplyDelete
  52. go123movies
    You might get trouble while downloading AOL desktop gold software. Fixing this problem is not so complicated and can be done by the user on his own. You can use an anti-virus software or you can clear cache, cookies, etc. These steps could help you but to get an instant solution, you can contact download aol desktop gold where the experts will help you to get rid of this issue.

    ReplyDelete
  53. תמשיכו בפרסום פוסטים מעניינים כמו זה. תודה.
    נכסים מניבים

    ReplyDelete
  54. Excellent information Providing by your Article. Thanks
    playboy bunny necklace silver

    ReplyDelete
  55. This comment has been removed by the author.

    ReplyDelete
  56. הדעות שלי קצת חלוקות בעניין הזה אבל ללא ספק כתבת מעניין מאוד.
    בלוק עץ עם תמונה

    ReplyDelete
  57. פוסט מעניין, משתף עם העוקבים שלי. תודה.
    מצלמות אבטחה לבית

    ReplyDelete
  58. פוסט מעניין, משתף עם העוקבים שלי. תודה.
    התקנת אינטרקום

    ReplyDelete
  59. לגמרי פוסט שדורש שיתוף תודה.
    תמונה על בלוק עץ

    ReplyDelete
  60. מזל שנתקלתי בכתבה הזאת. בדיוק בזמן
    בלוק עץ עם תמונה

    ReplyDelete
  61. תודה על השיתוף. מחכה לכתבות חדשות.
    פיתוח אפליקציות לאנדרואיד

    ReplyDelete
  62. תודה על השיתוף. מחכה לכתבות חדשות.
    עיצוב חווית משתמש

    ReplyDelete
  63. I think your blog is very interesting but this post is not useful for every reader who is searching a reliable writing help for getting good marks.
    Dissertation Help UK

    ReplyDelete
  64. תודה על המאמר והמידע המקיף. אשמח למאמרים נוספים בנושא
    קולאז תמונות מתנה

    ReplyDelete
  65. פוסט מעניין, משתף עם העוקבים שלי. תודה.
    קנבס עם תמונות

    ReplyDelete
  66. פוסט נחמד. חייב לשתף עם העוקבים שלי.
    קאנבי

    ReplyDelete
  67. Thanks for sharing this great information with us
    Garage door repair Markham

    ReplyDelete
  68. I really appreciate all the great content you have here. I am glad I came across it!


    Bastion Balance Korea

    ReplyDelete
  69. Thanks for taking the time to discuss that, I really feel strongly about it and love learning more on that topic. If achievable, as you gain competence, would you mind updating your blog with more information? It is highly helpful for me.


    Bastion Balance Seoul

    ReplyDelete
  70. It was another joy to see your post. It is such an important topic and ignored by so many, even professionals. I thank you to help making people more aware of possible issues. Great stuff as usual...


    Investors Magazine

    ReplyDelete
  71. wow i love t hat SO much... can i cut and paste it into my blog?? but give u credit, of course???


    Stratford Management Japan

    ReplyDelete
  72. חייב להחמיא על הכתיבה. מאמר מצוין.

    בריכות שחיה פיברגלס

    ReplyDelete
  73. מאמר מצוין נהניתי מכל רגע של קריאה

    בניית בריכה מתועשת

    ReplyDelete
  74. Thanks for the post. I'm a big fan of the blog, i've even put a little bookmark right on the tool bar of my Firefox you'll be happy to find out!


    Garage Door Repair Cochrane

    ReplyDelete
  75. wow i love t hat SO much... can i cut and paste it into my blog?? but give u credit, of course???


    Garage Door Repair Cochrane

    ReplyDelete
  76. Thanks for sharing this great information with us.
    anlageobjekte

    ReplyDelete
  77. מעניין מאוד, למרות שלא הכל מדויק לדעתי
    אינפיניטי qx70

    ReplyDelete
  78. I visited your blog for the first time and just been your fan. I Will be back often to check up on new stuff you post!


    pittsburgh garage door repair

    ReplyDelete
  79. I really appreciate all the great content you have here. I am glad I came across it!


    appliance repair mississauga

    ReplyDelete
  80. I visited your blog for the first time and just been your fan. I Will be back often to check up on new stuff you post!


    a1 appliance repair

    ReplyDelete
  81. Many people ask Gogoanime, legal or illegal. yes, it is totally legal. This site running legally. You can watch a whole range of anime series free. Everyone can enjoy watching with their family member. You can watch the latest gogoanime at gogoanimetoday.com. We will give the knowledge that is all you want to know about Is Gogoanime.

    Lottery sambad is the Indian lottery system. The important and main thing which attracts the people to invest in this lottery is the number of prizes and size of the lottery. There are many other lotteries in India but sambad is a very popular lottery among the Indian people.

    We can say that many Indians are fond of lottery games. Our team member daily updated the result of the lottery sambad on this site 3 times a day. So you can view results and download these results on daily basis. Lottery sambad results announce is 11:55 AM, 4:00 PM, and 8:00 AM.

    ReplyDelete
  82. Many people ask Gogoanime, legal or illegal. yes, it is totally legal. This site running legally. You can watch a whole range of anime series free. Everyone can enjoy watching with their family member. You can watch the latest gogoanime at gogoanimetoday.com. We will give the knowledge that is all you want to know about Is Gogoanime.

    Lottery sambad is the Indian lottery system. The important and main thing which attracts the people to invest in this lottery is the number of prizes and size of the lottery. There are many other lotteries in India but sambad is a very popular lottery among the Indian people.

    We can say that many Indians are fond of lottery games. Our team member daily updated the result of the lottery sambad on this site 3 times a day. So you can view results and download these results on daily basis. Lottery sambad results announce is 11:55 AM, 4:00 PM, and 8:00 AM.

    ReplyDelete
  83. You have a very good site, well constructed and very interesting i have bookmarked you, hopefully you keep posting new stuff, many thanks


    James Bauer’s His Secret Obsession reviews

    ReplyDelete
  84. I would be supportive on all your articles and blogs as a result of they are simply up to the mark.


    https://kingsslyn.com/is-toenail-fungus-contagious-keravita-toenail-fungus-review/

    ReplyDelete
  85. I really appreciate all the great content you have here. I am glad I came across it!


    garage door cable repair ottawa

    ReplyDelete
  86. You got a really useful blog I have been here reading for about half an hour. I am a newbie and your post is valuable for me.


    Los Angeles Garage Door Repair

    ReplyDelete
  87. In each dialogue box, the movies chronologically segregated in descending order.
    This site is very organized and very possible. The film can be searched alphabetically.
    From 0-9 and the alphabets individually can be searched.Hollywood, Bollywood, Malayalam, Tamil
    and Telugu movies. Once you open the website, you will be able to see a range of options.123Movies,
    GoMovies, GoStream, MeMovies or 123movieshub,movierulz,hindi movies,Bollywood | Hollywood | Songs | Punjabi
    | Hindi Dubbed | Songs | Hindi Webseries Season | Netfilix | ULLU App

    In a separate dialogue box, we can search by the plethora of the genres provided to us. Action, animation, adventure,
    biography, comedy, crime, documentary, drama, family, fantasy, film-noir, game show, history, horror, music, musical, mystery,
    news, reality show, romance, sci-fi, sports, talk- show, thriller, war and western and various genres can be found here.

    ReplyDelete
  88. I really appreciate all the great content you have here. I am glad I came across it!


    Garage Door Springs Replacement

    ReplyDelete
  89. You got a really useful blog I have been here reading for about half an hour. I am a newbie and your post is valuable for me.


    Garage Door Installation

    ReplyDelete
  90. Pinoy TV Brought Pinoy TV Shows Replay for Filipino community from all over the globe because The Filipino people are spread all over the universe. The Philippines produces a large number of expatriates every year.Watch Your Favourite Channel Dramas Online Pinoy Lambingan Tambayan Teleserye Tv Shows in HD. Filipinos are working all over the world. They are famous for their friendly and talkative behaviour. Pinoy TV shows Specially Pinoy Tambayan and Pinoy Lambingan Shows are Very Famous among Filipinos and Pinoy Television Channels like GMA Network and ABS-CBN Network are broadcasting a variety of interesting Pinoy Shows. Watch Pinoy Channel Tv Shows Online

    ReplyDelete
  91. לא כל כך מסכים עם הכל כאן האמת.

    התקנת אינטרקום

    ReplyDelete
  92. The tour is overall fluctuation of weather in UAE is hotter than normal especially for a foreigner by adventure group and Desert safari Dubai offers

    ReplyDelete
  93. Hatta Mountain Safari deals offering you affordable tour, of Hatta mountain tour over the seven Emirates of UAE. It is located in the East of Dubai. Our deal includes the beauty of the Hajar Mountains and Old Hatta Village charm.Best hatta tour

    ReplyDelete
  94. This discussion unexpectedly takes my attention to join inside. Well, after I read all of them, it gives me new idea for my blog. thanks


    https://www.webwire.com/ViewPressRel.asp?aId=262100

    ReplyDelete

  95. In each dialogue box, the movies chronologically segregated in descending order. This site is very organized
    and very possible. The film can be searched alphabetically. From 0-9 and the alphabets individually can be searched.
    Hollywood, Bollywood, Malayalam, Tamil and Telugu movies. Once you open the website, you will be able to see a range of
    options.123Movies, GoMovies, GoStream, MeMovies or 123movieshub,movierulz,hindi movies,Bollywood | Hollywood | Songs | Punjabi
    | Hindi Dubbed | Songs | Hindi Webseries Season | Netfilix | ULLU App

    In a separate dialogue box, we can search by the plethora of the genres provided to us. Action, animation, adventure, biography,
    comedy, crime, documentary, drama, family, fantasy, film-noir, game show, history, horror, music, musical, mystery, news, reality
    show, romance, sci-fi, sports, talk- show, thriller, war and western and various genres can be found here.

    ReplyDelete
  96. The mysterious journey begins when guests are picked up in a 4X4 car Desert safari dubai Deals at the scheduled time and dropped off at designated desert meeting places where they are taken to entertain and create adrenaline to pull the hot mound into the golden
    An Ultimate guide with awesome desert safari deals/offers and different types of desert safari Desert safari Dubai by adventure group.
    After this, guests are directed to a desert camp where they are warmly welcomed in an Arab style and are given welcome drinks and Arab days. You can feel the traditional Arabian spirit in the beautifully decorated Bedouin camp to represent the true Arabian way of life - a perfect place to relax and absorb the natural beauty of the amazing desert under the moonlight and Evening desert safari Dubai.

    ReplyDelete
  97. A great blog, it has a lot of useful information to me
    Village Talkies a top-quality professional corporate video production company in Bangalore and also best explainer video company in Bangalore & animation video makers in Bangalore, Chennai, India & Maryland, Baltimore, USA provides Corporate & Brand films, Promotional, Marketing videos & Training videos, Product demo videos, Employee videos, Product video explainers, eLearning videos, 2d Animation, 3d Animation, Motion Graphics, Whiteboard Explainer videos Client Testimonial Videos, Video Presentation and more for all start-ups, industries, and corporate companies. From scripting to corporate video production services, explainer & 3d, 2d animation video production , our solutions are customized to your budget, timeline, and to meet the company goals and objectives.
    As a best video production company in Bangalore, we produce quality and creative videos to our clients.

    ReplyDelete
  98. Adventures like desert safaris through the golden Arabian dunes, skydiving in the beautiful palm by the adventure group sponsered to the visitors.
    Pingback:tourist places in dubai
    Pingback:tourist places in dubai
    Pingback:tourist places in dubai

    ReplyDelete
  99. In camel racing, camels are also allowed to roam freely and the area can be explored independently. However, other species are not allowed to travel on it. Riding a camel on a quad bike on an evening desert safari in Dubai is very adventurous and offers a lifetime experience to anyone participating in this trip.

    ReplyDelete
  100. Luxury Safari BBQ Buffet - Veg & Non Veg, Camel Ride, Done Bashing, Live Show, Photography. Pickup / drop off from your location - home or hotel. Evening / morning desert safari in Dubai. Quad bike. Pull and release. Done bashing. Camel riding. Sand boarding and global village.

    ReplyDelete
  101. Dubai Desert safari is a true Arabian adventure, which takes place from 4 to 6 hours. Filled with, instagram stories, funny moments and thrilling moments, this is an exciting walk in the depths of the desert at this time, it's a must-have activity during your vacation in Dubai. Best of all, it's a safari deserto Dubai which is perfect for any type of equity or preference, whether you're an early bird or a passionate one. Simply select one of our morning, evening, or night, the desert safari.

    ReplyDelete
  102. Abu Dhabi City Tour will allow you to set the time in the world to find the beautiful, historic monuments, as well as the exploration of the city. You can even use it to capture the most beautiful moments of the trip is to cherish the memories of a wonderful trip. You can also take a local bus or even rent a private service, with a visit to the various sites.

    ReplyDelete
  103. Dubai creek park is located on the edge of the Creek. The Dubai Creek area, combining a commercial sea port, which it still does, which passes through the heart of Dubai city. Dubai creek park is a second largest park in Dubai, which will cover a large area of parkland, landscaped gardens and children’s playgrounds. We offer travel-lovers, with a lot of experience on the adventure of a lifetime, along with the best Desert Safari Dubai price

    ReplyDelete
  104. This is really a great stuff for sharing. Keep it up .Thanks for sharing! I had all sorts of problems in writing my assignment, and I wanted help with that. Dissertation Writing Services

    ReplyDelete
  105. When it comes to a luxury Boat Party in Dubai for those who can afford it, the pleasure and adventure that Yachts can provide cannot be overstated. Yachting is, without a doubt, the most beautiful sport on the planet. It's a once-in-a-lifetime opportunity to splash around in the ocean's deep blue waves and lose yourself in an environment that is both soothing and calming to the soul

    ReplyDelete
  106. wonderful article. Very interesting to read this article. I would like to thank you for the efforts you had made for writing this awesome article. This article resolved my all queries.

    ReplyDelete
  107. I found this article (and blog) amazing. having good explanation of Rebol-related things now thank you.
    Dissertation Writing Services

    ReplyDelete
  108. royal ace casino online gambling 우리카지노 계열사 우리카지노 계열사 bet365 bet365 106Best Betsoft Slots | Play at LACBET UK

    ReplyDelete
  109. Excellent read, I just passed this on to a colleague who was doing some research about it. He has already bought me lunch because I found a smile on him so let me rephrase that. dune buggy safari dubai

    ReplyDelete
  110. Thank you for sharing this amazing blog post.

    ReplyDelete
  111. A programming language that runs on a variety of platforms. Created by Carl Sassenrath, REBOL is a very concise language both in syntax and in implementation: the entire development system fits in only 200KB.

    ReplyDelete
  112. Rebol domain-specific languages, called dialects, are micro-languages optimized for a specific purpose. Dialects can be used to define business rules, graphical

    ReplyDelete
  113. I think the admin of this web page is really working hard in support of his web site, because here every data is quality based information.
    accounting assignment help services
    accounting homework help

    ReplyDelete
  114. Rebol is a highly versatile, multiplatform scripting language for Lightweight Distributed Computing created and maintained .
    check us out here.

    ReplyDelete
  115. Nice post, thanks for enlightenment. Check out more about Tree Service Spokane.

    ReplyDelete
  116. ดูหนังไม่กระตุก หนังHD หนังฝรั่ง หนังเอเชีย หนังออนไลน์ ดูหนังไม่เสียเงิน ดูหนังผ่านสมาร์ทโฟน หนังเต็มเรื่อง
    https://movie89hd.com/

    ReplyDelete
  117. Antalya is one of the biggest and most popular cities in Turkey. It is the capital of Antalya Province and has a population of over one million people.
    antalya resorts guide

    ReplyDelete
  118. Antalya is one of the biggest and most popular cities in Turkey. It is the capital of Antalya Province and has a population of over one million people.
    is antalya safe 2027

    ReplyDelete
  119. Mumbai weather: November and February are the best months to visit Mumbai. The weather is pleasant and conducive to sightseeing.
    Is Mumbai worth visiting?

    ReplyDelete