Elm-এ টাপল দুটি বা তিনটি মান ধরে রাখতে পারে, আর প্রতিটি মানের টাইপ যেকোনো কিছু হতে পারে। Elm-এ টাপল মূলত সাধারণ, ক্ষণস্থায়ী টাইপের কাজে ব্যবহৃত হয়। এই কারণেই টাপলে সর্বোচ্চ ৩টি মান থাকে, আর আরও উৎসাহ দিতে শুধু ২টি মানের জন্যই সুবিধাজনক ফাংশন সরবরাহ করা হয়। আরও জটিল ডেটার ক্ষেত্রে রেকর্ডে চলে যাওয়াই সবচেয়ে ভালো।
type alias IntStringTuple = (Int, String)
aTuple : IntStringTuple
aTuple = (123, "elements can be of differing types")
anotherTuple : (String, String)
anotherTuple = Tuple.pair "this time it's" "two strings"
--> ("this time it's", "two strings")
Tuple.first aTuple
--> 123
Tuple.second aTuple
--> "elements can be of differing types"
টাপল প্যাটার্ন ম্যাচিং ব্যবহার করে বাইন্ডিংয়ে টাপলকে ডিস্ট্রাকচার করা যায়। ডিস্ট্রাকচার করা যায় let এক্সপ্রেশন, ফাংশন ডিক্লারেশন আর case স্টেটমেন্টে।
repeatString : (Int, String) -> Bool
repeatString aTuple =
let
(aNumber, aString) = aTuple
in
String.repeat aNumber aString
repeatStringAgain : (Int, String) -> Bool
repeatStringAgain (aNumber, aString) = String.repeat aNumber aString
has123 : (Int, String, Bool) -> Bool
has123 aTuple =
case aTuple of
(123, _, _) ->
True
(_, "123", _) ->
True
(_, _, True) ->
True
_ ->
False
আজরা ও রুই একটি জলদস্যু-থিমের গুপ্তধন সন্ধান ডিজাইন করছেন। একটি হলো ম্যাপে অবস্থান-সহ গুপ্তধনের তালিকা, অন্যটি ম্যাপে অবস্থান-সহ স্থানের নামের তালিকা।
| গুপ্তধন | অবস্থান |
|---|---|
| Amethyst Octopus | (1, F) |
| Angry Monkey Figurine | (5, B) |
| Antique Glass Fishnet Float | (3, D) |
| Brass Spyglass | (4, B) |
| Carved Wooden Elephant | (8, C) |
| Crystal Crab | (6, A) |
| Glass Starfish | (6, D) |
| Model Ship in Large Bottle | (8, A) |
| Pirate Flag | (7, F) |
| Robot Parrot | (1, C) |
| Scrimshaw Whale's Tooth | (1, F) |
| Silver Seahorse | (4, E) |
| Vintage Pirate Hat | (7, E) |
| স্থানের নাম | অবস্থান | কোয়াড্রেন্ট |
|---|---|---|
| Seaside Cottages | (C, 1) | Blue |
| Aqua Lagoon (Island of Mystery) | (F, 1) | Yellow |
| Deserted Docks | (A, 2) | Blue |
| Spiky Rocks | (D, 3) | Yellow |
| Abandoned Lighthouse | (B, 4) | Blue |
| Hidden Spring (Island of Mystery) | (E, 4) | Yellow |
| Stormy Breakwater | (B, 5) | Purple |
| Old Schooner | (A, 6) | Purple |
| Tangled Seaweed Patch | (D, 6) | Orange |
| Quiet Inlet (Island of Mystery) | (E, 7) | Orange |
| Windswept Hilltop (Island of Mystery) | (F, 7) | Orange |
| Harbor Managers Office | (A, 8) | Purple |
| Foggy Seacave | (C, 8) | Purple |
খেলোয়াড়রা ম্যাপে ঘুরে বেড়াবেন আর পথে গুপ্তধন কুড়িয়ে নেবেন। বাড়তি চ্যালেঞ্জ যোগ করতে গুপ্তধন ও স্থানের অবস্থান ভিন্নভাবে লেখা হয়েছে। এছাড়া কিছু বিশেষ স্থানও আছে, যেখানে গেমে বাড়তি মোড় আনতে নির্দিষ্ট কিছু গুপ্তধন অন্য নির্দিষ্ট কিছু গুপ্তধনের সাথে বদল করা যায়। আপনার কাজ হলো তাদের গেমে সাহায্য করার জন্য ফাংশন লেখা।
placeLocationToTreasureLocation ফাংশনটি লিখুন, যেটি একটি Place Location (যেমন ('C', 1)) নিয়ে সেটিকে একটি Treasure Location-এ (যেমন (1, 'C')) রূপান্তর করে।
placeLocationToTreasureLocation ('C', 1)
--> (1,'C')
treasureLocationMatchesPlaceLocation ফাংশনটি লিখুন, যেটি একটি PlaceLocation (যেমন ('C', 1)) নেয় এবং সেটি একটি TreasureLocation-এর (যেমন (1, 'C')) সাথে মিললে ট্রু রিটার্ন করে।
treasureLocationMatchesPlaceLocation ('C', 1) (1, 'C')
--> true
treasureLocationMatchesPlaceLocation ('C', 1) (2, 'C')
--> false
countPlaceTreasures ফাংশনটি লিখুন, যেটি একটি Place (যেমন ("Aqua Lagoon (Island of Mystery)", ('F', 1))) এবং গুপ্তধনের তালিকা নেয়, আর সেখানে যে কতগুলো গুপ্তধন পাওয়া যায় সেই সংখ্যা রিটার্ন করে।
place = ("Aqua Lagoon (Island of Mystery)", ('F', 1))
countPlaceTreasures place treasures =
--> 2
specialCaseSwapPossible ফাংশনটি লিখুন, যেটি একটি Treasure (যেমন ("Amethyst Octopus", (1, 'F'))) এবং একটি Place (যেমন ("Seaside Cottages ", ('C', 1))) নেয়, আর নিচের সমন্বয়গুলোর জন্য ট্রু রিটার্ন করে:
if স্টেটমেন্ট ব্যবহার না করে একটি ad hoc টাপল দিয়ে case স্টেটমেন্ট হিসেবে এই ফাংশনটি লেখার চেষ্টা করুন (এটি Elm-এর একটি কমন আইডিয়ম)।
Exercism-এ সাইন আপ করুন, Elm ট্র্যাকের 28টি কনসেপ্ট110টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।